我想在不同的条件下运行一组测试,因此在两个不同的TestCase
派生类之间共享这些测试。
一个创建自己的独立会话,另一个附加到现有会话并在其中执行相同的测试。在
我想我在用unittest
框架测试一个API的时候有点滥用了它,但感觉它离它的初衷并不太远。到目前为止我还好吗?在
我把一些东西拼凑在一起,让它运行起来。但这样做,感觉不对,恐怕迟早会引起问题。在
我的解决方案存在以下问题:
当简单地用PyCharm运行这个东西而不限制测试时,它不仅尝试运行预期的StandaloneSessionTests
和{
我可以通过不从TestCase
派生这个函数来使它运行GroupOfTests
,但是PyCharm抱怨它不知道assert...()
函数。这样做是正确的,因为GroupOfTest
只有在派生类也从TestCase
继承时,才能在运行时间接访问这些函数。来自C++背景,这感觉像是黑魔法,我不认为我应该这样做。
我尝试将会话创建类传递给GroupOfTests
的构造函数,如下所示:__init__(self, session_class)
。但是当unittest
框架试图实例化测试时,这会导致问题:它不知道如何处理附加的__init__
参数。在
我学习了@classmethod
,这似乎是一种绕过Python“只有一个构造函数”限制的方法,但我无法找到让它运行的方法。在
我正在寻找一个解决方案,让我可以简单地陈述如下:
suite = unittest.TestSuite()
suite.addTest(GroupOfTests(UseExistingSession))
suite.addTest(GroupOfTests(CreateStandaloneSession))
...
到目前为止我得到的是:
^{pr2}$
我不确定使用^{} 是否适合您,但如果是这样的话,下面是一个可以满足您需要的示例。在
输出:
^{pr2}$如果您真的要使用
pytest
,那么您可能希望跟随conventions for Python test discovery,而不是使用hmm.py
作为文件名!在通过使用
raise NotImplementetError
创建抽象方法,可以让pycharm忽略这些不存在的函数:这将使python相信这是一个抽象类,如果子类没有定义这些函数,则pycharm将引发错误。在
相关问题 更多 >
编程相关推荐