【发布时间】:2019-02-14 04:49:53
【问题描述】:
背景
我正在使用 pytest 来测试一个将数据推送到数据库的网络爬虫。该类仅提取 html 并将 html 推送到数据库以供稍后解析。我的大多数测试都使用虚拟数据来表示 html。
问题
我想做一个测试,从网站上抓取一个网页,但除非指定,否则我希望自动关闭测试。如果您不想总是运行昂贵或耗时的测试,可能会出现类似的情况。
预期的解决方案
我期待某种标记会抑制测试,除非我让 pytest 运行所有抑制的测试,但我在文档中没有看到。
我做了什么
- 我目前正在使用跳过标记并将其注释掉。
-
尝试使用skipif 标记,并使用命令提示符
pytest test_file.py 1中的此命令和测试文件中的以下代码为python 脚本提供参数。问题是当我尝试为我的 test_file 提供一个参数时,pytest 期望它是另一个文件名,所以我收到一个错误“0.00 秒内没有运行测试,错误:找不到文件:1”if len(sys.argv) == 1: RUN_ALL_TESTS = False else: RUN_ALL_TESTS = True ... # other tests ... @pytest.mark.skipif(RUN_ALL_TESTS) def test_scrape_website(): ... 我或许可以将测试视为一个夹具并使用
@pytest.fixture(autouse=False),但不确定如何覆盖 autouse 变量How to skip a pytest using an external fixture? 中提出了类似的解决方案,但这个解决方案似乎比我需要的更复杂。
【问题讨论】:
标签: python python-3.x testing pytest