1

我在使用 python 中的单元测试运行硒测试的聚合测试套件时遇到问题。

下面的代码在没有调用 testRunner 的情况下从另一个模块执行测试。

当我尝试在调试模式下执行时,在执行类定义行并最终在另一个模块(gmailbutton)中执行测试后不久,控件就被传递给了 pydev_runfiles。

import unittest
from selenium import webdriver
from gmailbutton import gmailButton

class runner():
    def runner1(self):
        suite = unittest.TestSuite()
        suite.addTest(gmailButton)
        return suite

根据文档(http://docs.python.org/2/library/unittest.html),上面的代码只需将测试用例添加到套件中,并且测试应该已经执行

unittest.TextTestRunner(verbosity=2).run(suite)

这不是在这里发生的。

gmailButton 的测试代码在这里

import unittest
from selenium import webdriver


class gmailButton(unittest.TestCase):

    global browser

    def test_gmailButton(self):

        browser = webdriver.Firefox()

        try:
            browser.get("http://www.gmail.com")           
            browser.find_element_by_id("Email").send_keys("abcd")
            browser.find_element_by_id("Passwd").send_keys("123445")
            browser.find_element_by_id("signIn").click()

        except Exception as e:
            raise
            print e

        finally:
            browser.close()

更新:

这是我从 Eclipse 执行的确切代码。

import unittest
from selenium import webdriver
from gmailbutton import gmailButton
from pyUnitExercise import exercise1

class runner():
    def runner1(self):
        suite = unittest.TestSuite()
        suite.addTest(gmailButton)
        return suite

if __name__ == "__main__":
    unittest.TextTestRunner(verbosity=2).run(runner.suite)

我对这段代码的期望是执行 gmailButton 测试用例,而不是执行刚刚导入且未添加到测试套件中的 exercise1。我不知道它为什么要执行刚刚导入但未添加到测试套件中的测试。

4

2 回答 2

1

如果您使用的是 PyDev,那么您可能实际上并没有使用 python 的 stdlib unittest。它使用鼻子和/或py.test:

http://pydev.org/manual_adv_pyunit.html

这两个库都通过自省搜索测试;您不需要向测试套件添加显式条目。但是,如果没有运行测试时的输出,很难判断这是否真的发生了。

于 2012-12-24T22:24:12.410 回答
0

我优先使用鼻子而不是单元测试,但这是一种似乎对我有用的方法:

>>> import unittest
>>> class gmailButton(unittest.TestCase):
    def test_gmailButton(self):
        pass


>>> suite = unittest.TestSuite()
>>> loader = unittest.TestLoader()
>>> tests = loader.loadTestsFromTestCase(gmailButton)
>>> suite.addTest(tests)
>>> unittest.TextTestRunner(verbosity=2).run(suite)
test_gmailButton (__main__.gmailButton) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.047s

OK
<unittest.runner.TextTestResult run=1 errors=0 failures=0>
于 2012-12-21T00:48:26.283 回答