一、用例用例全部执行与选择执行
单元测试用例的执行顺序按照定义的用例的名称的编码大小,从小到大依次执行,因此一般通过后缀001、002...等来规划测试用例的执行顺序,例如:
import unittest
class F1(unittest.TestCase):
def setUp(self):
print('我已经做好了准备工作')
def tearDown(self):
print('已处理')
def test_001(self): #单独执行其中的一个用例,鼠标放在这行里,右键点击执行
print('test001')
def test_002(self):
print('test002')
def test_003(self):
print('test003')
if __name__ == '__main__':
unittest.main(verbosity=2) #执行所有的用例,鼠标放在这行里,右键点击执行
鼠标放到main方法中,右键选择文件执行会执行所有的测试用例,结果为:
如果只执行其中的一条用例则鼠标放在这个用例的方法中右键选择文件执行会只执行这一条用例
# 执行所有用例的运行结果
Testing started at 上午11:32 ...
/Users/ligaijiang/PycharmProjects/interfaceTest2/venv/bin/python /Applications/PyCharm.app/Contents/helpers/pycharm/_jb_unittest_runner.py --path /Users/ligaijiang/PycharmProjects/interfaceTest2/pythonstudying/unittest/ut1.py
Launching unittests with arguments python -m unittest /Users/ligaijiang/PycharmProjects/interfaceTest2/pythonstudying/unittest/ut1.py in /Users/ligaijiang/PycharmProjects/interfaceTest2/pythonstudying/unittest
我已经做好了准备工作
test001
已处理
我已经做好了准备工作
test002
已处理
我已经做好了准备工作
test003
已处理
Ran 3 tests in 0.002s
OK
Process finished with exit code 0
二、单元测试用例的执行顺序
执行以下测试用例,会先执行map再执行news,虽然news写在来前面
import unittest
from selenium import webdriver
import time
class F3(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.maximize_window()
self.driver.implicitly_wait(30)
self.driver.get('https://www.baidu.com/')
def tearDown(self):
self.driver.quit()
def test_baidu_news(self):
self.driver.find_element_by_link_text('新闻').click()
time.sleep(5)
def test_baidu_map(self):
self.driver.find_element_by_partial_link_text('图').click()
time.sleep(5)
if __name__ == '__main__':
unittest.main(verbosity=2)
通过验证可以发现m的编码为109,n的编码为110,因此先执行的m开头的,再执行的n开头的
Last login: Wed May 13 17:33:51 on ttys004
(base) localhost:~ ligaijiang$ python
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 26 2018, 23:26:24)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> ord('n')
110
>>> ord('m')
109
>>>
三、单元测试用例使用套件控制浏览器的打开次数
以下方式,浏览器会只打开一次,执行两个测试用例后关闭一次,结束:
import unittest
from selenium import webdriver
import time
class F2(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.driver=webdriver.Firefox()
cls.driver.maximize_window()
cls.driver.implicitly_wait(30)
cls.driver.get('https://www.baidu.com/')
@classmethod
def tearDownClass(cls):
cls.driver.quit()
def test_baidu_news_001(self):
self.driver.find_element_by_link_text('新闻').click()
time.sleep(10)
self.driver.back()
def test_baidu_map_002(self):
self.driver.find_element_by_partial_link_text('图').click()
time.sleep(15)
self.driver.back()
if __name__ == '__main__':
unittest.main(verbosity=2) #如何执行所有的用例
以下方式,浏览器会打开一次,执行用例001,关闭;浏览器再次打开,执行用例002,关闭
import unittest
from selenium import webdriver
import time
class F3(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.maximize_window()
self.driver.implicitly_wait(30)
self.driver.get('https://www.baidu.com/')
def tearDown(self):
self.driver.quit()
def test_baidu_news_001(self):
self.driver.find_element_by_link_text('新闻').click()
time.sleep(5)
def test_baidu_map_002(self):
self.driver.find_element_by_partial_link_text('图').click()
time.sleep(5)
if __name__ == '__main__':
unittest.main(verbosity=2) # 如何执行所有的用例
总结:
感谢每一个认真阅读我文章的人!!!
我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。