草庐IT

pytest-asyncio

全部标签

python - 遍历 asyncio.coroutine

我最近一直在研究asyncio,虽然我开始对它的工作原理有了直觉,但有些事情我还做不到。我不确定这是因为我的构造有误,还是我尝试做的事情没有意义。简而言之,我希望能够迭代生成的asyncio.coroutine。例如,我希望能够执行以下操作:@asyncio.coroutinedefcountdown(n):whilen>0:yieldfromasyncio.sleep(1)n=n-1yieldn@asyncio.coroutinedefdo_work():fornincountdown(5):print(n)loop.run_until_complete(do_work())但是,这

python - 是否可以只运行 asyncio 事件循环的一个步骤

我正在使用asyncio和tkinter开发一个简单的图形网络应用程序。我遇到了将asyncio事件循环与Tk的主循环相结合的问题。如果可能的话,我想在没有线程的情况下进行,因为这两个库(尤其是tkinter)都不是线程安全的。目前,我在asyncio协程中使用Tk.update,它只运行tk事件循环的一次迭代:@asyncio.coroutinedefrun_tk(tk,interval=0.1):try:whileTrue:tk.update()yieldfromasyncio.sleep(interval)exceptTclErrorase:if"applicationhasbe

python - asyncio 的 call_later raises 'generator' object is not callable with coroutine object

我有一些使用call_later使用Python3.4的asyncio制作的简单代码。代码应该打印,等待10秒,然后再次打印(但是在应该执行end()时引发TypeError,见下文):importasyncio@asyncio.coroutinedefbegin():print("Startingtowait.")asyncio.get_event_loop().call_later(10,end())@asyncio.coroutinedefend():print("completed")if__name__=="__main__":try:loop=asyncio.get_eve

python - 运行 pytest 时 more-itertools 中的语法无效

我有以下最小的setup.py:importsetuptoolssetuptools.setup(setup_requires=['pytest-runner'],tests_require=['mock','pytest'],test_suite='tests',python_requires='>=2.7',)运行时pythonsetup.pytest我不断收到以下错误:回溯(最近调用最后):文件“setup.py”,第8行,在python_requires='>=2.7',File"/Users/project/tmp/env/lib/python2.7/site-package

python - 使用队列的 Asyncio 持久客户端协议(protocol)类

我正在努力了解Python3asyncio模块,特别是使用传输/协议(protocol)API。我想创建一个发布/订阅模式,并使用asyncio.Protocol类来创建我的客户端和服务器。目前,我已启动并运行服务器,并监听传入的客户端连接。客户端能够连接到服务器,发送消息并接收回复。我希望能够使TCP连接保持事件状态并维护一个允许我添加消息的队列。我试图找到一种使用低级API(传输/协议(protocol))来执行此操作的方法,但有限的在线asyncio文档/示例似乎都进入了高级API-使用流等。有人能够为我指明正确的实现方向?这是服务器代码:#!/usr/bin/envpython

python - pytest:如何在 session 结束时获取所有失败测试的列表? (并且在使用 xdist 时)

我想要一个所有失败测试的列表,以便在session结束时使用。Pytest允许您定义一个Hookpytest_sessionfinish(session,exitstatus),它在session结束时调用,我希望在其中获得该列表。session是一个_pytest.main.Session实例,具有属性items(类型list),但我找不到该列表中的每个item是否通过或失败。如何在session结束时检索所有失败测试的列表?如何在使用pytest-xdist插件时完成,我想在主进程中获取该列表。使用这个插件,session在master中甚至没有items属性:defpytest_

python - 在 pytest 中,如何跳过或 xfail 某些固定装置?

我有一个重固定测试函数,它在某些固定输入时失败(它应该)。我怎样才能指出这一点?这就是我现在正在做的,也许还有更好的方法。我是py.test的新手,所以我很感激任何提示。下一部分是所有输入灯具。仅供引用,example_datapackage_path在conf.test中定义@pytest.fixture(params=[None,'pooled_col','phenotype_col'])defmetadata_key(self,request):returnrequest.param@pytest.fixture(params=[None,'feature_rename_col'

python - pytest 报告摘要显示错误信息

我对pytestHook和插件比较陌生,我不知道如何让我的pytest代码给我测试执行摘要和失败原因。考虑代码:classFoo:def__init__(self,val):self.val=valdeftest_compare12():f1=Foo(1)f2=Foo(2)assertf1==f2,"F2doesnotmatchF1"deftest_compare34():f3=Foo(3)f4=Foo(4)assertf3==f4,"F4doesnotmatchF3"当我使用-v选项运行pytest脚本时,它会在控制台上显示以下结果:=========================

python - 我如何断言列表与 pytest 相等

我正在尝试使用pytest进行一些单元测试。我正在考虑做这样的事情:actual=b_manager.get_b(complete_set)assertactualisnotNoneassertactual.columns==['bl','direction','day']第一个断言没问题,但第二个断言出现值错误。ValueError:Thetruthvalueofanarraywithmorethanoneelementisambiguous.Usea.any()ora.all()我认为用pytest断言两个不同列表的相等性不是正确的方法。我如何断言数据框列(列表)等于预期列?谢谢

python - 如何在 pytest 中将几个参数化的 fixture 连接成一个新的 fixture ?

如果我有两个参数化的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