<p>我将尝试这样做:</p>
<p>1)将抽象类保存在<code>test_case.py</code></p>
<pre><code>class TestCase:
def executeTest():
#do some logic for the test, then return if it passed or failed
</code></pre>
<p>2)将所有子类保存在<code>test_case_children.py</code></p>
^{pr2}$
<p>3)将主函数保存在<code>main.py</code>:</p>
<pre><code>from test_case import TestCase
import test_case_children
def main():
#grab the all the elements in the script 'test_case_children'
items = test_case_children.__dict__
#build list of all 'TestCase' sub-classes
test_classes = []
for (key, value) in items.items():
try:
# check whether the item is a sub-class of 'TestCase' class
if TestCase.__subclasscheck__(value):
test_classes.append(value)
except TypeError: #if item is not of type 'TestCase', ignore it
pass
#run the tests
for test_class in test_classes:
test_runner = test_class()
test_runner.executeTest()
# this will run main() method, only when script is directly executed
# from shell or command prompt ...
if __name__ == "__main__":
main()
</code></pre>
<p>4)执行<code>main.py</code>脚本:</p>
<p><code>$ python main.py</code></p>
<p><b>注意:</b>还有一件事,保存这些文件的文件夹还应该包含一个空的<code>__init__.py</code>文件,使该文件夹成为python应用程序(类似于<code>Java</code>中的<code>packages</code>或{<cd10>}中的<code>namespaces</code>)。如果不这样做,那么这些导入语句可能就不起作用了。在</p>
<p><b>[<i>从不同文件运行测试用例的更新</i>]</b></p>
<p>1)档案按以下层级保存:</p>
<pre><code><root>/
>test_case/
>__init__.py
>main.py
>test_case.py
>test_case_children/
->__init__.py
->test_case_1.py
->test_case_2.py
->test_case_3.py
</code></pre>
<p>2)将抽象类保存在<code>test_case/test_case.py</code></p>
<pre><code>class TestCase:
def executeTest():
#do some logic for the test, then return if it passed or failed
</code></pre>
<p>3)保存子类如下:</p>
<p>文件:<code>test_case/test_case_children/test_case_1.py</code></p>
<pre><code>from test_case.test_case import TestCase
class Test_Case_1(TestCase):
def executeTest():
#overriden function
</code></pre>
<p>文件:<code>test_case/test_case_children/test_case_2.py</code></p>
<pre><code>from test_case.test_case import TestCase
class Test_Case_2(TestCase):
def executeTest():
#overriden function
</code></pre>
<p>文件:<code>test_case/test_case_children/test_case_3.py</code></p>
<pre><code>from test_case.test_case import TestCase
class Test_Case_3(TestCase):
def executeTest():
#overriden function
</code></pre>
<p>4)将主函数保存在<code>main.py</code>:</p>
<pre><code>from test_case import TestCase
from test_case import test_case_children
def main():
#grab the all the elements in the module 'test_case_children'
items = test_case_children.__dict__
#build list of all 'TestCase' sub-classes
test_classes = []
for (dict_key, dict_value) in items:
#check whether the type of item's value is a module,
# if its a module it's likely to contain a TestCase subclass...
if str(type(dict_value)) == "<type 'module'>":
for (key, value) in dict_value.items():
try:
# check whether the item is a sub-class of 'TestCase' class
if TestCase.__subclasscheck__(value):
test_classes.append(value)
except TypeError: #if item is not of type 'TestCase', ignore it
pass
#run the tests
for test_class in test_classes:
test_runner = test_class()
test_runner.executeTest()
# this will run main() method, only when script is directly executed
# from shell or command prompt ...
if __name__ == "__main__":
main()
</code></pre>
<p>5)执行<code>main.py</code>脚本:</p>
<pre><code>$ cd test_case/
$ python main.py
</code></pre>
<p>我希望这对你有用。在</p>