编写Web测试用例---discover

随着功能的不断增加,对应的测试用例也呈现指数级的增了,对于实现十几个功能程序来讲,对应的单元测试用例可能就会达到上百个,对于这种情况 test.py 文件会变得异常臃肿,我们不得不将这些用例进行划分,分散到不同的文件中,这样更便于维护。

TestLoader该类根据各种标准负责加载测试用例,并它们返回给测试套件。正常情况下没有必要创建这个类的实例。unittest 提供了可以共享了 defaultTestLoader 类,可以使用其子类和方法创建实例,所以我们可以使用其下面的 discover()方法来创建一个实例。
  discover(start_dir,pattern='test*.py',top_level_dir=None)
找到指定目录下所有测试模块,并可递归查到子目录下的测试模块,只有匹配到文件名才能被加载。
如果启动的不是顶层目录,那么顶层目录必须要单独指定。
start_dir :要测试的模块名或测试用例目录。
pattern='test*.py' :表示用例文件名的匹配原则。星号“*”表示任意多个字符。
top_level_dir=None:测试模块的顶层目录。如果没顶层目录(也就是说测试用例不是放在多级目录中),默认为 None。

 

将前面学到的web端的测试和单元测试整合到一起,写一个完整的案例

案例:百度搜索关键词:“Selenium自学网” 并打开课程页面。

#/usr/bin python
#-*- coding:UTF-8 -*-
from selenium import webdriver
from time import sleep
import unittest

class TestBaidu(unittest.TestCase):
    def setUp(self):
        print("baidu test ……")
        self.driver = webdriver.Chrome()
        self.driver.get("https://www.baidu.com/")
    def test_driver(self):
        self.driver.find_element_by_id('kw').clear()
        self.driver.find_element_by_id('kw').send_keys('Selenium 官网')
        self.driver.find_element_by_id('su').click()
        sleep(3)
    def tearDown(self):
        print("baidu end!!!!")
        self.driver.quit()

if __name__ == "__main__":
    unittest.main()

执行案例的脚本

#/usr/bin python
#-*- coding:UTF-8 -*-
import unittest

test_dir='./'

discover=unittest.defaultTestLoader.discover(test_dir,pattern="web_baidu.py")
if __name__ == '__main__':
    runer=unittest.TextTestRunner()
    runer.run(discover)

 关于文件路径的思考

  当test_dir 路径下的既有.py文件又有文件夹+.py或者 文件夹+文件夹+.py文件时,test_dir='./test_case/' 这种写法就只会运行该路径下的.py 文件,而无法运行二级三级文件夹下的py文件

  

 

  解决办法:在目录下添加__init__.py 文件,结果如图

  

 

posted @ 2018-06-26 15:02  pretend_smile  阅读(534)  评论(0)    收藏  举报