川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

通过unittest加载测试用例的不同方法

作者:川石学院 日期:2022-02-11 10:30:05 点击数:

一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的通过unittest加载测试用例的不同方法

自动化测试:手把手教你学会Selenium高级操作!(图1)

  使用python+unitest做自动化测试执行时, 执行用例时就涉及测试用例的加载。

  即如何把测试cases加载到测试suite,然后进行运行。

  一般把用例加载方法分为两大类:通过unittest.main(),或者通过testsuit。

  第一种方式使用比较简单,第二种比较灵活多样。

  一、测试文件中有测试类,及main方法。

  测试代码如下:

  import unittest

  class MyTestCase(unittest.TestCase):

  # setUp、tearDown此处省略

  # 测试用例1

  def test_001(self):

  #具体的测试脚本

  ......

  # 测试用例2

  def test_002(self):

  #具体的测试脚本

  ......

  if __name__ == "__main__":

  unittest.main()

  这种方法更适合命令行执行。

  二、测试文件和执行文件不在同一个文件中

  1. 通过testsuite从指定类添加指定用例:

  if __name__ == '__main__':

  # 创建测试套suite对象

  suite = unittest.TestSuite()

  # 往suite中添加用例

  suite.addTest(MyTestCase1("test_login_success")) # 添加参数:类名(方法名称)

  suite.addTest(MyTestCase1("test__login_fail"))

  # 创建runner对象

  runner = unittest.TextTestRunner(verbosity=2)

  # 调用runner的run方法执行suite中的用例

  runner.run(suite)

  2. 通过loader从指定类中加载测试用例到suite

  if __name__ == "__main__":

  # 从指定类加载测试方法到suite

  suite1 = unittest.TestLoader().loadTestsFromTestCase(MyTestCase1) # 参数:类名

  suite2 = unittest.TestLoader().loadTestsFromTestCase(MyTestCase2)

  # 创建新suite,参数为前边的suite1和suite2

  suite = unittest.TestSuite([suite1, suite2]) # suite嵌套

  # 执行suite中的用例

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

  3. 通过loader从指定文件中加载测试用例到suite

  if __name__ == "__main__":

  # 从指定类加载测试方法到suite

  suite1 = unittest.TestLoader().loadTestsFromModule(cases.ec_login) # 参数:模块名称

  suite2 = unittest.TestLoader().loadTestsFromModule(cases.ec_register)

  # 创建新suite,参数为前边的suite1和suite2

  suite = unittest.TestSuite([suite1, suite2]) # suite嵌套

  # 执行suite中的用例

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

  4. 通过loader从指定字符串加载测试用例到suite

  if __name__ == "__main__":

  # 从指定类加载测试方法到suite

  suite1 = unittest.TestLoader().loadTestsFromName("MyTestCase1",cases.ec_login)

  suite2 = unittest.TestLoader().loadTestsFromName(

  "MyTestCase1.test_login_fail",cases.ec_login) # 参数:类名/方法名,模块名

  # 创建新suite,参数为前边的suite1和suite2

  suite = unittest.TestSuite([suite1, suite2]) # suite嵌套

  # 执行suite中的用例

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

  5. 通过loader从指定目录加载测试用例到suite

  if __name__ == "__main__":

  # 从指定类加载测试方法到suite

  suite1 = unittest.TestLoader().discover("case1", "ec*.py") # 参数:目录,匹配模式

  suite2 = unittest.TestLoader().discover("case2", "test*.py")

  # 创建新suite,参数为前边的suite1和suite2

  suite = unittest.TestSuite([suite1, suite2]) # suite嵌套

  # 执行suite中的用例

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

  总结:

  以上加载用例的方式很多,可以灵活根据需要选取。若是批量执行,使用discover方法比较方便。

  若要生成美观点的结果报告,可以结合htmlreport使用:

  # 创建loader对象

  loader = unittest.defaultTestLoader

  # 加载方法到suite中

  suite1 = loader.discover("case1", "ecshop*.py")

  suite2 = loader.discover("case2", "selenium*.py")

  # 创建suite对象

  suite = unittest.TestSuite()

  # 添加suite到suite

  suite.addTests(suite1)

  suite.addTests(suite2)

  # 创建runner对象

  HTMLReport.TestRunner().run(suite) # 生成html格式报告

今天关于“通过unittest加载测试用例的不同方法”就学习到这里了,每个工作日小编都会更新一个小知识,希望大家多多关注我们,一起来学习喔!


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2022-02-11 10:30:05
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2022-02-11 10:30:05
  • 国外的月亮也不一定比国内测试猿的年薪美~2022-02-11 10:30:05
  • 建筑工程专业朱同学成功转行为软件测试人!2022-02-11 10:30:05
  • 财务管理专业转行软件测试月薪甩会计几条街!2022-02-11 10:30:05
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2022-02-11 10:30:05
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2022-02-11 10:30:05
  • 文科生转行软件测试照样拿下高薪15K!2022-02-11 10:30:05
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2022-02-11 10:30:05
  • 毕业1年,迷茫的他最终选择转行软件测试2022-02-11 10:30:05