相关疑难解决方法(0)

用两个不同的pytest灯具进行测试

我目前正在使用pytest和Selenium测试一个Web应用程序.所有页面都有"Home"和"Log Out"链接,所以我写了一个这样的测试:

def test_can_log_out(page):
    link = page.find_element_by_partial_link_text('Log Out')
    link.click()
    assert 'YOU HAVE SUCCESSFULLY LOGGED OFF!' in starting_page.page_source
Run Code Online (Sandbox Code Playgroud)

现在对于page夹具,我正在模拟登录过程.我把它分成了几个装置:

  1. 获取Selenium WebDriver实例

    @pytest.fixture()
    def browser(request, data, headless):
        b = webdriver.Firefox(executable_path=DRIVERS_PATH + '/geckodriver')
        yield b
        b.quit()
    
    Run Code Online (Sandbox Code Playgroud)
  2. 登录Web应用程序

    @pytest.fixture()
    def login(browser):
        browser.get('http://example.com/login)
        user_name = browser.find_element_by_name('user_name')
        user_name.send_keys('codeapprentice')
        password = browser.find_element_by_name('password')
        password.send_keys('password1234')
        submit = browser.find_element_by_name('submit')
        submit.click()
        return browser
    
    Run Code Online (Sandbox Code Playgroud)
  3. 访问页面

    @pytest.fixture()
    def page(login):
        link = login.find_element_by_partial_link_text('Sub Page A')
        link.click()
        return login
    
    Run Code Online (Sandbox Code Playgroud)

这非常有效,我可以测试从此页面注销.现在我的问题是我有另一个页面可以从"页面A"访问:

@pytest.fixture()
def subpage(page):
    button = login.find_element_name('button')
    button.click()
    return page
Run Code Online (Sandbox Code Playgroud)

现在我想用这个灯具运行完全相同的测试.当然,我可以复制/粘贴并进行一些更改:

def test_can_log_out_subpage(subpage):
    link …
Run Code Online (Sandbox Code Playgroud)

python testing selenium pytest

5
推荐指数
3
解决办法
2422
查看次数

标签 统计

pytest ×1

python ×1

selenium ×1

testing ×1