Có vẻ như mẫu mã 100% pytest
xem:
https://docs.pytest.org/en/latest/fixture.html#conftest-py-shaming-fixture-fifts
Tôi đã có cùng một vấn đề với, đây là lý do tại sao tôi tìm thấy bài đăng này;)
# ./tests/test_twitter1.py
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
Và nó sẽ cảnh báo với This inspection detects shadowing names defined in outer scopes.
Để khắc phục điều đó, chỉ cần di chuyển twitter
vật cố của bạn vào./tests/conftest.py
# ./tests/conftest.py
import pytest
from syntropy import db
@pytest.fixture
def twitter():
twitter_ = db.Twitter()
twitter_._debug = True
return twitter_
Và loại bỏ twitter
vật cố định như trong./tests/test_twitter2.py
# ./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
Điều này sẽ làm cho QA, Pycharm và mọi người hạnh phúc