前言 很多初学者在使用unittest框架时候,不清楚用例的执行顺序到底是怎样的。对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行。 本篇通过最简单案例详细讲解unittest执行顺序。 一、案例分析 1.先定义一个测试类,里面写几个简单的case # coding:utf-8 import unittest import time class Test(unittest.TestCase): def setUp(self): print "start!"
def tearDown(self): time.sleep(1) print "end!"
def test01(self): print "执行测试用例01"
def test03(self): print "执行测试用例03"
def test02(self): print "执行测试用例02"
def addtest(self): print "add方法"
if __name__ == "__main__": unittest.main() 二、执行结果 D:\test\python2\python.exe D:/test/test01.py start! 执行测试用例01 .end! start! 执行测试用例02 end! .start! 执行测试用例03 end! . ---------------------------------------------------------------------- Ran 3 tests in 3.001s
OK 三、结果分析 1.执行顺序: start!-执行测试用例01-end! start!-执行测试用例02-end! start!-执行测试用例03-end! 2.从执行结果可以看出几点 --先执行的前置setUp,然后执行的用例(test*),最后执行的后置tearDown --测试用例(test*)的执行顺序是根据01-02-03执行的,也就是说根据用例名称来顺序执行的 --addtest(self)这个方法没执行,说明只执行test开头的用例 四、selenium实例 1.具体实例参考这篇Selenium2+python自动化48-登录方法(参数化) # coding:utf-8 from selenium import webdriver import unittest import time class Bolg(unittest.TestCase): u'''登录博客''' def setUp(self): self.driver = webdriver.Firefox() url = "https://passport.cnblogs.com/user/signin" self.driver.get(url) self.driver.implicitly_wait(30)
def login(self, username, psw): u'''这里写了一个登录的方法,账号和密码参数化''' self.driver.find_element_by_id("input1").send_keys(username) self.driver.find_element_by_id("input2").send_keys(psw) self.driver.find_element_by_id("signin").click() time.sleep(3)
def is_login_sucess(self): u'''判断是否获取到登录账户名称''' try: text = self.driver.find_element_by_id("lnk_current_user").text print text return True except: return False
def test_01(self): u'''登录案例参考:账号,密码自己设置''' self.login(u"上海-悠悠", u"xxxx") # 调用登录方法 # 判断结果 result = self.is_login_sucess() self.assertTrue(result)
def test_02(self): u'''登录案例参考:账号,密码自己设置''' self.login(u"上海-悠悠", u"xxxx") # 调用登录方法 # 判断结果 # 交流QQ群:232607095 result = self.is_login_sucess() self.assertTrue(result)
def tearDown(self): self.driver.quit()
if __name__ == "__main__": unittest.main()
|