我有一个测试目前使用这样的单个fixture运行:@pytest.fixture()deffoo():return'foo'deftest_something(foo):#assertsomethingaboutfoo现在我正在创建一个稍微不同的fixture,比方说@pytest.fixturedefbar():return'bar'我需要针对第二个fixture重复完全相同的测试。如果不复制/粘贴测试并更改参数名称,我该怎么做? 最佳答案 除了测试生成之外,您还可以为动态应用的任意数量的子fixture执行“fixture方式”
我的Django测试运行得非常慢,但这不是测试的错。目前,整个过程需要14秒,但其中只有0.1秒用于运行测试。前几秒是创建表和索引,剩下的是应用项目的许多fixture。处理此问题的最佳方法是什么?我认为有一种方法可以指定在每个测试中加载哪些fixtures,但我需要它们中的大多数来完成大多数测试......我认为可行的解决方案是,如果测试在每次运行后都没有删除表,那么就不需要在每次运行测试时都创建和填充数据库。大多数测试甚至不写入数据库。优化Django测试的fixture加载部分的最佳方法是什么?谢谢!(我使用的是nose,除此之外就是普通的Django和sqlite)编辑:我应该
我正在尝试使用py.test的fixtures在我的单元测试中,结合unittest。我在项目顶层的conftest.py文件中放置了几个固定装置(如here所述),用@pytest.fixture装饰它们,并且将它们的名称作为参数传递给需要它们的测试函数。灯具正确注册,如py.test--fixturestest_stuff.py所示,但是当我运行py.test时,我得到NameError:未定义全局名称“my_fixture”。这似乎只发生在我使用unittest.TestCase的子类时——但是py.test文档似乎说它与unittest配合得很好.当我使用unittest.Te
我经常会编写一个在每个方法中都使用pytestfixture的测试类。这是一个例子。我希望能够避免必须在每个方法的签名中写下fixture名称。这不是干的。如何才能做到这一点?我希望能够通过将fixture作为测试类的属性来访问fixture。在此示例中,我希望将googlefixture视为TestGoogle的一个属性。这可能吗?frombs4importBeautifulSoupimportpytestimportrequests@pytest.fixture()defgoogle():returnrequests.get("https://www.google.com")cla
我希望能够将一个值从一个fixture返回到多个测试/测试类,但传递的值是一个函数。这是我的代码:importpytest@pytest.fixture()defuser_setup():user={'name':'chad','id':1}returnuser@pytest.mark.usefixtures('user_setup')classTestThings:deftest_user(self):assertuser_setup['name']=='chad'输出是:===================================FAILURES=============
我使用以下命令生成了2个灯具:./manage.pydumpdata--format=json--indent=4--naturalauth.User>fixtures/user.json./manage.pydumpdata--format=json--indent=4--natural--exclude=contenttypes--exclude=auth>fixtures/full.json我有以下名为user.json的装置:[{"pk":4,"model":"auth.user","fields":{"username":"foo","first_name":"Se\u00e
如果我有两个参数化的fixture,我如何创建一个测试函数,首先用一个fixture的实例调用,然后用另一个fixture的实例调用?我想创建一个以某种方式连接两个现有装置的新装置是有意义的。这适用于“普通”灯具,但我似乎无法使用参数化灯具。这是我尝试过的一个简化示例:importpytest@pytest.fixture(params=[1,2,3])deflower(request):return"i"*request.param@pytest.fixture(params=[1,2])defupper(request):return"I"*request.param@pytest
我正在测试一个可能会死锁的异步函数。我尝试添加一个fixture来限制函数在引发故障之前只运行5秒,但到目前为止它还没有奏效。设置:pipenv--python==3.6pipenvinstallpytest==4.4.1pipenvinstallpytest-asyncio==0.10.0代码:importasyncioimportpytest@pytest.fixturedefmy_fixture():#attempttostartatimerthatwillstopthetestsomehowasyncio.ensure_future(time_limit())yield'egg
pytest内置fixture的作用域可以改变吗?这行不通:@pytest.fixture(scope="class")defmyFixture(tmpdir):pass...因为tmpdir是函数范围的:ScopeMismatch:Youtriedtoaccessthe'function'scopedfixture'tmpdir'witha'class'scopedrequestobject,involvedfactories是否可以覆盖pytest的内置fixture的范围,以便我可以获得类范围的tmpdirfixture? 最佳答案
我正在检查pytestfixtures,下面看起来很相似,最新的作品也很相似。是的,yield_fixure的可读性更好,但是有人可以让我知道到底有什么区别。在下面提到的情况下,我应该使用哪个?@pytest.fixture()defopen_browser(request):print("Browseropened")defclose_browser():print("browserclosed")request.addfinalizer(close_browser)return"browserobject"@pytest.yield_fixture()defopen_browser