AttributeError: module 'pytest' has no attribute 'config'
AttributeError: module 'pytest' has no attribute 'config'
我遵循了 this 教程(使用 Azure DevOps 为 Python Flask 构建 DevOps CI/CD 管道)。
有一个命令行任务来执行功能测试,我在 运行 时遇到错误。
命令行任务脚本如下:
pip install selenium && pip install pytest && pytest Tests/functional_tests/ --webAppUrl=$(webAppUrl.AppServiceApplicationUrl) --junitxml=TestResults/test-results.xml
这是用于功能测试的脚本:
import pytest
from selenium import webdriver
import unittest
import os
import sys
import pytest
import time
class FunctionalTests(unittest.TestCase):
def setUp(self):
options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox')
self.driver = webdriver.Chrome(os.path.join(os.environ["ChromeWebDriver"], 'chromedriver.exe'), chrome_options=options)
self.driver.implicitly_wait(300)
def test_selenium(self):
webAppUrl = pytest.config.getoption('webAppUrl')
start_timestamp = time.time()
end_timestamp = start_timestamp + 60*10
while True:
try:
response = self.driver.get(webAppUrl)
title = self.driver.title
self.assertIn("Home Page - Python Flask Application", title)
break
except Exception as e:
print('"##vso[task.logissue type=error;]Test test_selenium failed with error: ' + str(e))
current_timestamp = time.time()
if(current_timestamp > end_timestamp):
raise
time.sleep(5)
def tearDown(self):
try:
self.driver.quit()
except Exception as e:
print('tearDown.Error occurred while trying to close the selenium chrome driver: ' + str(e))
我收到以下错误:
> webAppUrl = pytest.config.getoption('webAppUrl')
AttributeError: module 'pytest' has no attribute 'config'
教程在本任务之前的任务中使用python353x86,确定Python版本,但是我用的是Python 3.6.4 x86.
另一方面,当 运行 命令行任务时,打印以下设置:
platform win32 -- Python 3.8.3, pytest-5.4.3, py-1.9.0, pluggy-0.13.1
我是 pytest 的新手,有人可以解决这个错误吗?我在其他 Whosebug 页面中找不到答案。
pytest.config
global 在 pytest==4.0
中弃用并在 pytest==5.0
中删除。如果您希望您的测试与 5.0 兼容,您需要通过自动夹具传递配置实例以便访问它:
class FunctionalTests(unittest.TestCase):
@pytest.fixture(autouse=True)
def inject_config(self, request):
self._config = request.config
def test_selenium(self):
webAppUrl = self._config.getoption('webAppUrl')
...
这与我在对 的回答中描述的方法相同。
对我来说,我只需要将 pytest-django 更新到最新的 4.5.2(截至 2022 年 5 月 16 日)。
我遵循了 this 教程(使用 Azure DevOps 为 Python Flask 构建 DevOps CI/CD 管道)。 有一个命令行任务来执行功能测试,我在 运行 时遇到错误。
命令行任务脚本如下:
pip install selenium && pip install pytest && pytest Tests/functional_tests/ --webAppUrl=$(webAppUrl.AppServiceApplicationUrl) --junitxml=TestResults/test-results.xml
这是用于功能测试的脚本:
import pytest
from selenium import webdriver
import unittest
import os
import sys
import pytest
import time
class FunctionalTests(unittest.TestCase):
def setUp(self):
options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox')
self.driver = webdriver.Chrome(os.path.join(os.environ["ChromeWebDriver"], 'chromedriver.exe'), chrome_options=options)
self.driver.implicitly_wait(300)
def test_selenium(self):
webAppUrl = pytest.config.getoption('webAppUrl')
start_timestamp = time.time()
end_timestamp = start_timestamp + 60*10
while True:
try:
response = self.driver.get(webAppUrl)
title = self.driver.title
self.assertIn("Home Page - Python Flask Application", title)
break
except Exception as e:
print('"##vso[task.logissue type=error;]Test test_selenium failed with error: ' + str(e))
current_timestamp = time.time()
if(current_timestamp > end_timestamp):
raise
time.sleep(5)
def tearDown(self):
try:
self.driver.quit()
except Exception as e:
print('tearDown.Error occurred while trying to close the selenium chrome driver: ' + str(e))
我收到以下错误:
> webAppUrl = pytest.config.getoption('webAppUrl')
AttributeError: module 'pytest' has no attribute 'config'
教程在本任务之前的任务中使用python353x86,确定Python版本,但是我用的是Python 3.6.4 x86.
另一方面,当 运行 命令行任务时,打印以下设置:
platform win32 -- Python 3.8.3, pytest-5.4.3, py-1.9.0, pluggy-0.13.1
我是 pytest 的新手,有人可以解决这个错误吗?我在其他 Whosebug 页面中找不到答案。
pytest.config
global 在 pytest==4.0
中弃用并在 pytest==5.0
中删除。如果您希望您的测试与 5.0 兼容,您需要通过自动夹具传递配置实例以便访问它:
class FunctionalTests(unittest.TestCase):
@pytest.fixture(autouse=True)
def inject_config(self, request):
self._config = request.config
def test_selenium(self):
webAppUrl = self._config.getoption('webAppUrl')
...
这与我在对
对我来说,我只需要将 pytest-django 更新到最新的 4.5.2(截至 2022 年 5 月 16 日)。