Bazı fikstür girişleriyle (gerektiği gibi) başarısız olan, ağır şekilde sabitlenmiş bir test fonksiyonum var. Bunu nasıl belirleyebilirim? Şu an yapıyorum, belki daha iyi bir yol var. Ben py.test
için oldukça yeni, bu yüzden herhangi bir ipucu için teşekkür ederim.Pytest'te, belirli fikstürler nasıl atlanır veya xfail verilir?
Sonraki parça, tüm giriş armatürleri. Bilginize, example_datapackage_path
conf.test
@pytest.fixture(params=[None, 'pooled_col', 'phenotype_col'])
def metadata_key(self, request):
return request.param
@pytest.fixture(params=[None, 'feature_rename_col'])
def expression_key(self, request):
return request.param
@pytest.fixture(params=[None, 'feature_rename_col'])
def splicing_key(self, request):
return request.param
@pytest.fixture
def datapackage(self, example_datapackage_path, metadata_key,
expression_key, splicing_key):
with open(example_datapackage_path) as f:
datapackage = json.load(f)
datatype_to_key = {'metadata': metadata_key,
'expression': expression_key,
'splicing': splicing_key}
for datatype, key in datatype_to_key.iteritems():
if key is not None:
resource = name_to_resource(datapackage, datatype)
if key in resource:
resource.pop(key)
return datapackage
@pytest.fixture
def datapackage_dir(self, example_datapackage_path):
return os.path.dirname(example_datapackage_path)
tanımlanır Ve burada bir test kendisidir.
def test_from_datapackage(self, datapackage, datapackage_dir):
import flotilla
from flotilla.external import get_resource_from_name
study = flotilla.Study.from_datapackage(datapackage, datapackage_dir,
load_species_data=False)
metadata_resource = get_resource_from_name(datapackage, 'metadata')
expression_resource = get_resource_from_name(datapackage,
'expression')
splicing_resource = get_resource_from_name(datapackage, 'splicing')
phenotype_col = 'phenotype' if 'phenotype_col' \
not in metadata_resource else metadata_resource['phenotype_col']
pooled_col = None if 'pooled_col' not in metadata_resource else \
metadata_resource['pooled_col']
expression_feature_rename_col = 'gene_name' if \
'feature_rename_col' not in expression_resource \
else expression_resource['feature_rename_col']
splicing_feature_rename_col = 'gene_name' if \
'feature_rename_col' not in splicing_resource \
else splicing_resource['feature_rename_col']
assert study.metadata.phenotype_col == phenotype_col
assert study.metadata.pooled_col == pooled_col
assert study.expression.feature_rename_col \
== expression_feature_rename_col
assert study.splicing.feature_rename_col == splicing_feature_rename_col
metadata_key
içindedir Ne yapmak istiyorsunuz, parametre, pooled_col
veya phenotype_col
olduğunda başarısız olacağını söylüyor. Ben pytest: Skip and xfail: dealing with tests that can not succeed baktım, ama sadece parametrik test, ama fikstür değil, sadece skip
ve xfail
konuştuk. here açıklandığı şekilde datapackage
veya expression_key
armatürleri ise
Oh, Güzel! "Pytest.fixture" için aynı argümanları "pytest.mark.parameterize" olarak kullanabileceğinizi anlayamadım. Teşekkür ederim! –