我是测试的新手,我想
1)测试登录
2)创建一个文件夹
3)将内容(页面)添加到文件夹
我已经编写了每个测试并且它们工作但显然我想建立彼此的ontop,例如,为了做3我需要做1然后2.为了做2我需要做1这是我的基本测试结构:
class TestSelenium(unittest.TestCase):
def setUp(self):
# Create a new instance of the Firefox driver
self.driver = webdriver.Firefox()
def testLogin(self):
print '1'
...
def testFolderCreation(self):
print '2'
...
def testContentCreation(self):
print '3'
...
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
unittest.main()
起初,我认为测试会按顺序运行,第二个功能会在第一个功能停止的地方继续运行,但我发现情况并非如此,似乎每次测试都会重新开始。我也意识到它们以相反的顺序执行。我在终端输出了3,2,1。我应该如何实现我想要的?如果我在运行我想要的那个之前调用之前的函数,我觉得它反复测试同样的东西,因为每个函数都是一个测试(例如,在testContentCreation
,我会调用'testLogin'然后调用testFolderCreation
和testFolderCreation
内部呼叫testLogin
。如果我要做更多,那么testLogin
会多次被召唤!)。我是否应该将前面的步骤转换为常规的非测试函数,并在最后的最后一个(测试函数)中按顺序调用前面的步骤?如果我这样做那么我猜如果任何步骤失败,最后一个失败,将有一个大的测试功能。
有关如何编写此类测试的任何建议? 另外,为什么测试以相反的顺序运行?
谢谢!
答案 0 :(得分:3)
我认为你正在看到你所看到的,因为你对假设unittest
做出了一些不正确的假设。假设每个测试用例都是一个独立的实体,因此不会强制执行运行顺序。此外,SetUp()
和TearDown()
在每个案例之前和之后运作。如果要进行全局设置/拆卸,则需要创建名为SetUpClass()
和TearDownClass()
的类方法。您可能还想查看TestSuite
课程。更多信息:http://docs.python.org/library/unittest.html
请记住,当unittest库进行测试发现时(反映您的测试用例类以查找要运行的测试用例),它基本上仅限于查看.__dict__
和dir()
值对象,本质上是无序的。