问题产生
用pytest写好pymysql的测试代码之后,完成了pymysql代码,测试通过。然后决定将数据库改成异步,即pymysql->aiomyqsql,然而返回结果不再是元组,而是coroutine对象,这时产生困惑,如何测试异步数据库?
解决思路
看到了静觅的a异步协程使用方法,获得了启发,可以在测试代码里,使用asyncio,并通过task的result()方法,来assert结果是否正确。
# 摘取部分代码,以展示思路
import asyncio
loop = asyncio.get_event_loop()
def test_get_sentence_by_text():
tasks = [asyncio.ensure_future(get_sentence_by_text('君')),
asyncio.ensure_future(get_sentence_by_text('君子'))]
loop.run_until_complete(asyncio.wait(tasks))
assert tasks[0].result() == (6, 4, '关关雎鸠,在河之洲。窈窕淑女,君子好逑。')
assert tasks[1].result() == (6, 4, '关关雎鸠,在河之洲。窈窕淑女,君子好逑。')