使用要测试的对象的单个初始化/销毁来运行多个测试



TL;DR:pytest是否可以创建一个对象的实例,然后在同一实例上运行一组测试?

我有一个自定义的C API,它使用posix线程并在串行端口上进行操作。我的API是一个带有主/从消息传递的自定义/专有协议的实现。使用C(或Python(中的简单测试程序,它可以正常工作。

但是,使用pytest,在测试消息的发送和接收时,pytest会重复打开/关闭COM端口并创建/删除后台线程,因为每个单元测试都是以以下方式编写的:

def test_send_message_XXX(serial1, serial2):
master = my_api.Master(serial1)
slave = my_api.Slave(serial2)
message = my_api.SomeCustomMessage()
master.send_message(message)
## tempo to be sure the message was sent
time.sleep(0.5)
rec = slave.receive()
slave.close()
## master is closed when the object is destroyed
assert rec == message.data

问题是,大多数时候,当我运行测试时,我要么遇到pytest崩溃(以segfault结束(,要么遇到一些随机情况,COM端口无法打开,或者打开但读取抛出了一个错误的文件描述符(运行ls /dev显示串行设备,而其他一些"较低级别"测试正在正确运行(。

当我使用这个API在一个;生产";(模拟的(上下文,这些错误永远不会出现。

有没有办法只初始化masterslave一次,然后在相同的实例上运行所有测试?

您可以使用固定装置或设置/拆除固定装置

相关内容

  • 没有找到相关文章

最新更新