看起来这是100%的 pytest 代码模式。
参见:
pytest fixtures: 明确、模块化、可扩展
我也遇到了同样的问题,这就是我找到这篇文章的原因 ;)
import os
import pytest
from mylib import db
@pytest.fixture
def twitter():
twitter_ = db.Twitter()
twitter_._debug = True
return twitter_
@pytest.mark.parametrize("query,expected", [
("BANCO PROVINCIAL", 8),
("name", 6),
("castlabs", 42),
])
def test_search(twitter: db.Twitter, query: str, expected: int):
for query in queries:
res = twitter.search(query)
print(res)
assert res
它将使用This inspection detects shadowing names defined in outer scopes.
警告。
要解决这个问题,只需将twitter
fixture移动到./tests/conftest.py
中即可。
import pytest
from syntropy import db
@pytest.fixture
def twitter():
twitter_ = db.Twitter()
twitter_._debug = True
return twitter_
请删除 twitter
fixture,就像在 ./tests/test_twitter2.py
中所做的那样:
import os
import pytest
from mylib import db
@pytest.mark.parametrize("query,expected", [
("BANCO PROVINCIAL", 8),
("name", 6),
("castlabs", 42),
])
def test_search(twitter: db.Twitter, query: str, expected: int):
for query in queries:
res = twitter.search(query)
print(res)
assert res
这将让QA、PyCharm和所有人都感到高兴。