python - 如何在每个 py.test 断言失败时调用方法?

标签 python selenium testing pytest

背景:

我正在使用 py.test 和 pytest-selenium,现在我想在断言失败时截取页面。

目前我已经在我的基页对象类中定义了一个小的辅助方法:

class PageBase(object):
    def __init__(self,driver):
        self.driver = driver
        self.fake = Factory.create()

    def screenshot(self,name):
        self.driver.save_screenshot(datetime.now().strftime('%Y-%m-%d %H:%M:%S') + 'scr_'+name+'.png')

    @contextmanager
    def wait_for_page_load(self, timeout=45):
        old_page = self.driver.find_element_by_tag_name('html')
        yield
        WebDriverWait(self.driver, timeout).until(
            EC.staleness_of(old_page)
        )

问题是我想让它成为自动化机制而不是“手动”使用: (测试类示例):

class TestLogin:
    @allure.feature('Ability to login into admin panel')
    def test_admin_login(self, prepare, page):

        print URLMap.admin('test')
        driver = prepare
        driver.get(URLMap.admin(page))

        login_page = LoginPage(driver)
        assert login_page.is_page_correct(),'Login page not loaded correctly'

        login_page.fill_login_data('testadmin','testadmin')
        login_page.click_login_button()
        assert login_page.is_user_logged_in(),'User cannot log in with provided credentials'
        login_page.screenshot(page+'_logged_in')

如何为每个断言失败运行特定的方法?

最佳答案

关于python - 如何在每个 py.test 断言失败时调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37340865/

相关文章:

python - 覆盖来自第三方应用程序的 URL 模式

python - 永远不会创建文件

java - 数据库问题

google-chrome - 在较旧的 google chrome 版本中进行测试

javascript - 如何对 Firefox 57 WebExtensions 进行单元测试?

testing - junit 测试方法的正确命名约定

python - 在 C++ 和 Python 代码之间转移控制

python - 确定 python 是否正在退出

java - 执行 Jenkins 构建时出错

java - 如何在 Selenium Web 驱动程序中关闭 GWT 中的面板?