草庐IT

pytest-asyncio

全部标签

python - 如何使用 fixture 使 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

python - 在 nose 或 pytest 中收集以编程方式生成的测试套件的好方法

假设我有一个这样的测试套件:classSafeTests(unittest.TestCase):#snip20testfunctionsclassBombTests(unittest.TestCase):#snip10differenttestcases我目前正在做以下事情:suite=unittest.TestSuite()loader=unittest.TestLoader()safetests=loader.loadTestsFromTestCase(SafeTests)suite.addTests(safetests)ifTARGET!='prod':unsafetests=l

python - Pytest 2.5.2 覆盖率报告必须处理的缺失行

我有一个Python小项目,我想为它做覆盖率报告。当我运行时py.test-x-sMYPACKAGE--cov-reporthtml--covMYPACKAGE它向我展示了覆盖范围内遗漏的大量行。这些主要是导入和类/方法定义。我确信所有这些行都在我的单元测试中得到处理,第19行和第31-35行验证了这一点。为什么py.test将所有定义标记为“缺失”? 最佳答案 一个常见的原因是模块conftest.py提前导入了应该测量的模块。当然,应该在测试之前评估测试配置。有时无法轻易删除这种依赖性。这就是为什么许多答案推荐如何规避pytes

python - 从 concurrent.futures 到 asyncio

concurrent.futures有两个问题:如何在pythonconcurrent.futures中中断time.sleep()?结论:time.sleep()不能中断。一种解决方案是:您可以围绕它编写一个循环并进行短暂的休眠。参见Howtobreaktime.sleep()inapythonconcurrent.futuresconcurrent.futures的个别超时?结论:个别超时需要由用户实现。例如:对于每次超时,您都可以调用wait()。参见Individualtimeoutsforconcurrent.futures问题asyncio是否解决了这些问题?

python - 当 pytest 与 REST 框架交互时,PATCH 和 PUT 无法按预期工作

我正在使用djangoREST框架构建API。为了测试此API,我正在使用pytest和测试客户端,如下所示:deftest_doesnt_find(self,client):resp=client.post(self.url,data={'name':'123'})assertresp.status_code==404或deftest_doesnt_find(self,client):resp=client.get(self.url,data={'name':'123'})assertresp.status_code==404在使用REST框架的一般GET、POST和DELETE类(

python - 在pytest中人为地提前时间

我的代码取决于耗时(例如:如果10分钟过去了)在pytest中模拟这个的最佳方法是什么?模块时间的猴子补丁方法?示例代码(测试代码-有点示意图但传达了信息):current_time=datetime.datetime.utcnow()retry_time=current_time+datetime.timedelta(minutes=10)#time_in_dbrepresentstimeextractedfromDBiftime_in_db>retry_time:#performtheretry 最佳答案 FreezeGun可能

python - 在 pycharm/pydev 中调试 pytest 事后异常

我想将PyCharm的内置Pytest运行器与调试器一起使用,而无需预先配置断点。问题是Pytest捕获了我测试中的异常,因此PyCharm的事后调试器无法处理异常。我知道使用断点是可行的,但我不希望我的测试运行两次。在Unittest中找到了一种方法,我想知道Pytest中是否存在类似的东西。IsthereawaytocatchunittestexceptionswithPyCharm? 最佳答案 你在使用pytest-pycharm插入?看起来对我有用。创建虚拟环境,pipinstallpytestpytest-pycharm,

python - asyncio as_yielded 来自异步生成器

我希望能够从多个异步协程中产生结果。Asyncio的as_completed有点接近我正在寻找的东西(即我希望任何协程能够随时返回调用者然后继续),但这似乎只是允许常规协程返回一次。这是我目前所拥有的:importasyncioasyncdeftest(id_):print(f'{id_}sleeping')awaitasyncio.sleep(id_)returnid_asyncdeftest_gen(id_):count=0whileTrue:print(f'{id_}sleeping')awaitasyncio.sleep(id_)yieldid_count+=1ifcount>

python - unittest vs pytest vs nose

我是Python测试的新手,在这两者之间有一些困难。UnitTest、Pytest和鼻子。我正在构建一个测试库,它需要:安装一个包,更改conf重启deamons,并在Linux设备上取消安装包。哪一个测试框架在这三个测试框架之间最好?在测试结束时,我非常想拥有:n测试成功n跳过测试n测试失败你能提供一些建议吗?干杯 最佳答案 这是一个非常广泛的问题,有很多可用的资源。但是,我会推荐py.test,因为尽管有一套完整的工具,但入门非常容易。在开始之前,鼻比py.test需要更多的配置。UNITTest和Java中的JUnit一样,这

python - 属性错误 : module 'asyncio' has no attribute 'create_task'

我正在尝试asyncio.create_task()但我正在处理这个错误:这是一个例子:importasyncioimporttimeasyncdefasync_say(delay,msg):awaitasyncio.sleep(delay)print(msg)asyncdefmain():task1=asyncio.create_task(async_say(4,'hello'))task2=asyncio.create_task(async_say(6,'world'))print(f"startedat{time.strftime('%X')}")awaittask1awaitt