假設我有一個非常簡單的網絡應用程序,如果現任總統是民主黨人,則呈現藍色,如果他們是共和黨人,則呈現紅色。一個REST API來獲取當前的總裁,通過端點:使用Mocked REST API的測試環境
/presidents/current
目前返回的JSON對象:
{name: "Donald Trump", party: "Republican"}
所以,當我的頁面加載我所說的終點,我顯示紅色或藍色取決於誰返回。
我想測試這個HTML/JavaScript頁面,我希望嘲笑後端,以便我可以從測試環境中控制API響應。例如:
def test_republican():
# configure the response for this test that the web app will receive when it connects to this endpoint
configure_endpoint(
"/presidents/current",
jsonify(
name="Donald Trump",
party="Republican"
)
)
# start the web app in the browser using selenium
load_web_app(driver, "http://localhost:8080")
e = driver.find_element_by_name("background")
assert(e.getCssValue("background-color") == "red")
def test_democrat():
# configure the response for this test that the web app will receive when it connects to this endpoint
configure_endpoint(
"/presidents/current",
jsonify(
name="Barack Obama",
party="Democrat"
)
)
# start the web app in the browser using selenium
load_web_app(driver, "http://localhost:8080")
e = driver.find_element_by_name("background")
assert(e.getCssValue("background-color") == "blue")
所以,問題是我應該如何實現功能configure_endpoint
()什麼庫,你可以推薦嗎?
沒有load_web_app()只使用硒在瀏覽器中加載html/js文件。我需要通過創建一個web應用連接到的api服務器來模擬後端。這個模擬服務器應該可以在測試環境中進行配置。 – Baz
您是否有充分的理由希望隔離被測試的系統,這與被測試的客戶端業務邏輯相距甚遠,而不是更接近它? (我假設你使用了一些已經經過良好測試的網絡訪問庫,而不是自己編碼的,如果你這樣做,你的測試當然也必須覆蓋那部分。) –
這個API是已經覆蓋了測試。這些測試涉及調用api並測試是否收到正確的響應。我想現在測試Web應用程序中的流程,並測試該應用程序對於我希望支持的瀏覽器的預期行爲。換句話說,我想將前端視爲一個子系統,併爲其編寫子系統測試。 – Baz