<p>其他人会比我更能增加价值,但我注意到以下几点:</p>
<ul>
<li><code>if __name__ == '__main__'</code>需要在最外面的作用域上(否则它将留在类内部,不会被执行)。在</li>
<li>导入<code>common_page_elements</code>时,不会在<code>run_tests.py</code>中引用它。如果您在这里定义<code>username</code>,那么您需要在它前面显式地引用<code>common_page_elements</code>。在</li>
<li>在您的<code>test_loginLogout</code>函数中,向它传递两个参数。我不是专家,但我从未见过将<code>self</code>以外的变量传递给测试用例的情况。因此,即使重新构造代码以正确地从<code>test1.py</code>调用函数<code>test_login_logout</code>,也不会传递<code>self</code>(它将保存<code>setUp</code>的内容)。所以这行不通。在</li>
<li>如果您要从不同的模块运行测试,我相信每个模块都必须与其测试用例密封,这意味着它们应该能够独立运行。在您的例子中,<code>test1.py</code>似乎没有任何必要的信息来运行您所需要的设置报告。在</li>
<li>考虑到以上几点,您可能希望使用<code>unittest.TestLoader().loadTestsFromModule()</code>函数,该函数将允许您加载其他测试模块并执行它们。在</li>
</ul>
<p>这是完全未经测试的代码(我知道这是可怕的双关语),但类似这样的代码可能在您的情况下有效:</p>
<pre><code>import logging, os.path, re, sys, time, unittest
from testcases import test1, test2
def main():
# Create a loader object
test_loader = unittest.TestLoader()
# Add your tests
suite = test_loader.loadTestsFromModule(test1)
suite.addTests(test_loader.loadTestsFromModule(test2))
# Run the tests
unittest.TextTestRunner(verbosity=2).run(suite)
if __name__ == '__main__':
unittest.main()
</code></pre>
<p>至于<code>setUp</code>和<code>tearDown</code>片段,我会将它们放在您的测试模块中,因此您的<code>Test1Test</code>可以如下所示:</p>
^{pr2}$