试图找到最优雅的方式来通知测试夹具测试失败。该测试夹具需要将测试结果报告给saucelabs,以便将其标记为通过或失败。我试图从这些示例中删除尽可能多的无关代码。
以下测试使用fixture 浏览器。
def test_9(browser):
browser.get(MY_CONSTANT)
assert "My Page" in browser.title
browser.find_element_by_css_selector('div > img.THX_IP')
browser.find_element_by_link_text('Some text').click()
... etc
fixture 浏览器,目前已经硬编码以将测试标记为已通过:
@pytest.fixture()
def browser(request):
driver_type = request.config.getoption('driver')
if driver_type == 'sauce':
driver = webdriver.Remote(
command_executor = 'MY_CREDENTIALS',
desired_capabilities = caps)
else:
driver = webdriver.Chrome()
driver.implicitly_wait(2)
yield driver
if driver_type == 'sauce':
sauce_client.jobs.update_job(driver.session_id, passed = True)
driver.quit()
我发现了一些解决方法,但我真的很想知道最好的方法。
答案 0 :(得分:0)
我在conftest.py文件中有以下fixture,它处理所有传递/失败报告。我不确定它是“最好的方式”,但它肯定对我们有用。我们为每个编写的测试都包含了这个夹具。
这个装置还有很多,但是底部的这个部分很好地处理了报告。
def quit():
try:
if config.host == "saucelabs":
if request.node.result_call.failed:
driver_.execute_script("sauce:job-result=failed")
elif request.node.result_call.passed:
driver_.execute_script("sauce:job-result=passed")
finally:
driver_.quit()