0

我正在学习 pytest,但在添加 pytest-bdd(功能文件,步骤文件是我要运行的文件)之前尝试运行运行良好的测试时出错,这是我的代码:

import pytest
import time
from selenium import webdriver
from pytest_bdd import scenario, given, when, then

@scenario('../feature/learn.feature', 'learning pytest-bdd')

@when('Does work-->website open, find element')
def does_work():
    driver = webdriver.Edge(r"C:/Users/artri/Downloads/edgedriver_win64/msedgedriver.exe")

    driver.get('https://www.example.com/')
    driver.maximize_window()
    print(driver.title)

    time.sleep(5)

    element = driver.find_element_by_xpath("//button[@class='btn btn-outline-light btn-lg btn-close']")
    element.click()

    name = driver.find_element_by_xpath("//a[@href='/items/something/']").text
    driver.quit()

    return name

@then('Get text "something"')
def test_work():
    assert does_work() == 'something'

它找到元素并检查它的值是否正确。我想知道为什么在添加步骤并制作功能文件后它不起作用。相同步骤文件中的其他测试就像以前一样工作。错误按摩:

@then('Get text "something"')
    def test_work():
>       assert does_work() == 'something'
E       TypeError: scenario_wrapper() missing 1 required positional argument: 'request'

我看了几个类似的问题,但对我来说不是可以理解的。如果有人知道问题可能出在哪里或一些链接将不胜感激!

4

1 回答 1

1

你有没有函数 def 的装饰器。

来自文档:https ://github.com/pytest-dev/pytest-bdd

@scenario('publish_article.feature', 'Publishing the article')
def test_publish():
    pass

你需要装饰空函数。

于 2021-11-06T10:05:58.277 回答