- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个重固定测试函数,它在某些固定输入时失败(它应该)。我怎样才能指出这一点?这就是我现在正在做的,也许还有更好的方法。我是 py.test
的新手,所以我很感激任何提示。
下一部分是所有输入灯具。仅供引用,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)
这是测试本身。
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
中,说当参数是 pooled_col
或 phenotype_col
时,它将失败。我看了pytest: Skip and xfail: dealing with tests that can not succeed , 但它只讨论了参数化测试的 skip
和 xfail
,而不是 fixtures。
最佳答案
在您的 datapackage
或 expression_key
fixture 中,您可以使用 pytest.xfail
和 pytest.skip
,如 here 所述.例如:
@pytest.fixture
def datapackage(self, example_datapackage_path, metadata_key,
expression_key, splicing_key):
if metadata_key == 'pooled_col':
pytest.skip('metadata key is "pooled_col"')
...
您还可以在 fixture 参数中使用 pytest.mark.xfail
,如本例所示:
@pytest.fixture(params=['a', pytest.mark.xfail('b'), 'c'])
def fx1(request):
return request.param
def test_spam(fx1):
assert fx1
如果您更愿意跳过这些测试,这似乎可行:
@pytest.fixture(
params=['a', pytest.mark.skipif(True, reason='reason')('b'), 'c'])
def fx1(request):
return request.param
def test_spam(fx1):
assert fx1
关于python - 在 pytest 中,如何跳过或 xfail 某些固定装置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26128620/
我一直致力于将两个遗留数据库中的一些 57k 多条记录精炼和重构为一个与 Django 兼容的实体。现在,当我完成后,我将其转储为固定装置,并尝试将其加载到生产环境中。 我的问题是该进程不久后就被“杀
我有一个包含 3 个模型的应用程序,它们以父子方式相互引用: class A(Model): # ... class B(Model): a = ForeignKey(A) #
我在我的 Django 应用程序中使用夹具,但只有两个应用程序正在加载它们的夹具。 当我使用 --verbosity=2 手动运行 loaddata 时,我可以看到它只在两个应用程序中查找,尽管我在其
我正在寻找一个快速的 BigFloat 单元,它可以处理加法、减法、乘法和除法(对数可以,但不是必需的),并且精度至少为 100 位小数。我试过this单位,但它比标准扩展操作慢大约 1,000 倍。
我有一个 Django 应用程序。我有包含测试数据的 .json 固定文件,以及使用数据确认应用程序正常工作的单元测试。我还使用 South 来迁移我的数据库。 在进行了几次数据库迁移后,我的固定装置
我创建了一些模型,我想为其提供初始数据。问题是模型有好几个,我想整理一下数据。 目前,我有一个包含数据的大 JSON 文件:initial_data.json。我以为我可以使用一些注释,但是 JSON
我的项目中有以下文件树: ... tests/ __init__.py test_abc.py ... 我在 __init__.py 中定义了一个固定装置: @pytest.fixtu
目前,我所有的装置都与它们要用于的 table 同名,因为最近出现了 rails 问题,似乎不可能有一个以“test”这个词开头的装置 有谁知道有一种方法可以使用不同的灯具名称,然后将其映射到正确的表
我正在尝试向使用多个数据库的 rails (v 3.1.3) 应用程序添加测试装置。 该夹具应仅应用于应用程序自己的测试 sqlite 数据库: test: adapter: sqlite3
我正在尝试在Docker容器中运行riofs,但是当我尝试运行riofs时,出现以下错误: fuse: device not found, try 'modprobe fuse' first ERRO
我制作了一个基本包,以方便在 Pyramid 应用程序中使用 SQLAlchemy:pyramid_sqlalchemy 。当您使用此包为应用程序编写测试时,您将需要一些固定装置来提供工作数据库环境。
有没有办法将我现有的数据库行导出为 Doctrine 装置? 最佳答案 不幸的是,目前没有 symfony 1.x 中的导出功能 关于doctrine - Symfony2 将数据库导出到 Doctr
我正在尝试创建一组测试用例来覆盖我的 Django 应用程序。我需要预定义的数据库数据来运行我的一些测试。所以我决定使用固定装置。 我所做的是:1)创建 fixture 文件: oleg$ pytho
我有以下结构: demo/ conftest.py test_1.py test_2.py conftest.py 内容为: import pytest @pytest.fixture()
有人在 Windows 上安装过 Polymer 吗?我刚开始使用 GIT,它说你需要 Bower 和 Node 以及其他一些东西才能让它工作。 最佳答案 我们正在开发一个简单的 ZIP 文件供人们下
Python 和 Django 的新手,尝试导入 .json 文件。 JSON 文件的结构使得每个根级对象中都有一个嵌套对象。 例如,JSON 的结构为: [ { "model": "test
我正在尝试理解提供的示例 here并模拟它适用于 post 方法而不是 get 方法。 当我测试 response.status_code == 200 时,一切正常。如何在不重复代码的情况下测试多个
我正在使用 jasmine fixtures,我想用一个包含 iframe 的 HTML 编写一个测试。 问题是测试在我的 iframe 加载之前执行。 库本身有解决方案吗? 还是我必须实现自己的机制
我有一个基于 Symfony2 + Doctrine2 构建的应用程序,我想为其创建一些测试(使用 phpunit)。 例如,如果我想针对数据库中的记录测试一个唯一验证器,我想创建一个我可以使用的记录
如何在 .yml 中为 has_many 和 belongs_to 变量创建示例数据。 这是将这些文件添加到终端中一个简单的 rails new lab 命令的示例。我真的不知道如何用英语解释这个。但
我是一名优秀的程序员,十分优秀!