我在一个应用程序中有一个类,它使用来自kivy_garden.graph
的MeshLinePlot
来在类中的数据更改时更新绘图。我想写一些测试,但是在使用stockunittest
模块和pytest
时,我遇到了奇怪的错误
下面是我的测试脚本的情况:
# test_container.py
import unittest
from kivy_garden.graph import MeshLinePlot
class Container():
def __init__(self, id):
self.id = id
#self.mesh = MeshLinePlot()
class TestOne(unittest.TestCase):
def test_dummy(self):
print('In dummy_test()')
self.assertEqual(1, 1)
def test_class_init(self):
print('In test_class_init()')
c = Container(1)
self.assertEqual(c.id, 1)
if __name__ == '__main__':
unittest.main()
如果按原样运行此代码,则无论是使用unittest.main
还是从pytest
调用它,这两个测试都将启动并通过。但是,如果取消注释网格在Container
中实例化的行,则会得到不同的结果。使用unittest.main()
,只有test_class_init()
打印任何内容,并且测试结果不会显示:
[INFO ] [Logger ] Record log in C:\Users\ganzk\.kivy\logs\kivy_20-07-26_90.txt
[INFO ] [deps ] Successfully imported "kivy_deps.glew" 0.2.0
[INFO ] [deps ] Successfully imported "kivy_deps.sdl2" 0.2.0
[INFO ] [Kivy ] v1.11.1
[INFO ] [Kivy ] Installed at "c:\Users\ganzk\Desktop\peaks\kivy_env\lib\site-packages\kivy\__init__.py"
[INFO ] [Python ] v3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)]
[INFO ] [Python ] Interpreter at "c:\Users\ganzk\Desktop\peaks\kivy_env\Scripts\python.exe"
[INFO ] [Factory ] 184 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO ] [Text ] Provider: sdl2
In test_class_init()
现在,如果我们尝试使用pytest(call:pytest test_container.py
)运行脚本,则不会得到任何测试结果、打印语句和下面的长回溯:https://pastebin.com/98q7BaeN
有关我的软件包安装的信息:https://pastebin.com/YNMVx2wK
我真的很不明白该如何让它工作。查看init
for MeshLinePlot
,它似乎没有做什么,更不用说阻止单元测试继续进行了。我在网上没有看到任何人有类似的问题;有人知道如何让测试在使用MeshLinePlot
的类上运行吗?非常感谢
如果其他人发现了这个,下面是我找到的解决方法。实例化kivy图形指令的测试用例必须从
kivy.tests.common.GraphicUnitTest
继承。否则,初始化kivy画布等的代码将失败并完全终止您的测试以下脚本按预期工作:
相关问题 更多 >
编程相关推荐