I have the following Gherkin Scenario Outline:
Scenario: Links on main page
When I visit the main page
Then there is a link to "<site>" on the page
Examples:
|site |
|example.com |
|stackoverflow.com|
|nasa.gov |
and the respective test.py:
from pytest_bdd import scenario, given, when, then
@scenario("test.feature", "Links on main page")
def test_links():
pass
In my conftest.py
, I perform a login and logout at startup/teardown respectively:
@pytest.fixture(autouse=True, scope="function")
def login_management(driver, page_url, logindata):
login()
yield
logout()
However, I don't want the browser to log out and log in between checking every link - I would rather all the links were checked on one page visit. I also would prefer to keep this tabular syntax instead of writing a dozen of steps to the tune of
And there is a link to "example.com"
And there is a link to "stackoverflow.com"
And there is a link to "nasa.gov"
Is there any way to signal that for this test only , all of the scenarios in this outline should be performed without the teardown?
Scenario Outlines are just a compact way of writing several individual scenarios. Cucumber and other testing frameworks work on the idea of isolating each individual test/scenario to prevent side effects from one test/scenario breaking other test/scenarios. If you try an bypass this you can end up with a very flaky test suite that has occasional failures which are based on the order test/scenarios are run, rather than the test/scenario failing for a legitimate reason.
So what you are trying to do breaks a fundamental precept of testing, and you really should avoid doing that.
If you want to be more efficient testing your links, group them together and give them a name. Then test for them in a single step and get rid of your scenario outline eg
Scenario: Main page links
When I visit the main page
Then I should see the main page links
Then "I should see the main page links" do
expect(page).to have_link("example.com")
expect(page).to have_link("nasa.gov")
...
end
Now you have one simple scenario that will just login once and run much faster.
NOTE: examples are in ruby (ish), but the principle applies no matter the language.
In general I would suggest avoiding scenario outlines, you really don't need to use them at all.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.