一、准备条件——使用禅道自己搭建和部署测试环境

1)在官网下载禅道禅道11.7版本发布,主要修复Bug,升级禅道客户端 - 禅道下载 - 禅道开源项目管理软件->放在根目录下解压处XAMPP文件夹->点击start.exe->点击访问禅道即可进入登录页面,在左下角有一个Apache的用户验证访问选项,测试的时候可以选择不勾选这个选项,直接进入禅道的登录页面->禅道的登录账号和密码默认是:账号:admin 密码:123456,首次登录需要修改密码。

禅道调用Python接口导入测试用例_程序员

  二、框架总体规划及完成禅道页面登录

禅道调用Python接口导入测试用例_程序员_02

如下图,我们需要做一些准备工作搭建测试框架,首先需要新建新建测试工程,我在这里建立的是unittest_train,随后在工程下新建如下5个模块或代码文件。

1. 用例case:包含测试用例文件夹和BUG用例文件夹,test1.py和test2.py分别用不同的def函数编写不同的测试用例脚本。

2. log日志。

3. report:这个文件夹用来输出测试报告及测试截图。

4. untils。

5. run.py:这个文件用来批量运行想要测试的用例集,完成到这里准备工作差不多就完成了,接着需要开始创建测试用例了。

禅道调用Python接口导入测试用例_测试用例_03

 三、在selenium中使用unittest新增和修改测试用例

举个小例子,我test2.py中编写两条测试用例脚本:

第一条case是test_00login,测试目的是:为了验证是否能正常启动浏览器,打开禅道登陆界面

第二条case是test_01addcase,测试目的是:为了验证是否能正常启动浏览器,打开禅道登陆界面并完成自动登录,并进入到zentao测试平台,自动添加测试用例test_01addcase,并验证是否建立于平台上的case是否正确

import unittest #导入框架
  from selenium import webdriver #导入驱动和selenium库
  import time as t #导入时间模块
  class test_2(unittest.TestCase):
      def test_00login(self):
              self.driver = webdriver.Chrome()
              self.driver.get('http://127.0.0.1/zentao/user-login.html')
              pass
      def test_01addcase(self):
              print('每条用例开始前的操作...')
              self.driver = webdriver.Chrome()
              self.driver.get('')
              self.driver.get('http://127.0.0.1/zentao/user-login.html')
              self.driver.maximize_window()
              t.sleep(7)
              self.driver.get_screenshot_as_file('E:\\pythontrain\\unittest_train\\report\\png\\1.png')#截图
              self.driver.find_element_by_xpath('//*[@id="account"]').send_keys('admin')
              self.driver.find_element_by_xpath('//*[@name="password"]').send_keys('luoyiran123456')#登陆输入密码
              self.driver.find_element_by_xpath('//*[@id="submit"]').click()#点击提交
              t.sleep(2)
              self.driver.get_screenshot_as_file('E:\\pythontrain\\unittest_train\\report\\png\\2.png')  # 截图
              self.driver.find_element_by_xpath('//*[@id="navbar"]/ul/li[4]/a').click()#点击“测试”
              t.sleep(2)
              self.driver.find_element_by_xpath('//*[@id="subNavbar"]/ul/li[2]/a').click()#点击“用例”
              t.sleep(2)
              self.driver.get_screenshot_as_file('E:\\pythontrain\\unittest_train\\report\\png\\3.png')
              self.driver.find_element_by_xpath('//*[@id="mainMenu"]/div[3]/a[2]').click()#点击“建用例”
              t.sleep(2)
              self.driver.find_element_by_xpath('//*[@id="title"]').send_keys('test_01addcase')
              t.sleep(3)
              self.driver.execute_script("scroll(0,1000)")
              t.sleep(2)
              self.driver.find_element_by_xpath('//*[@id="submit"]').click()## 因为在点击保存按钮的时候保存按钮是隐藏在下面的,所以需要通过滚轮让y坐标增加,也就是往下滚看得到保存按钮
              t.sleep(2)
              self.assertIn('test_01addcase', self.driver.page_source)#这里就需要用上断言,判断刚刚创建的用例是否存在
              self.driver.get_screenshot_as_file('E:\\pythontrain\\unittest_train\\report\\png\\用例创建完成.png')
              t.sleep(5)
              pass
  if  __name__ =='__main__':
      unittest.main()

四、执行测试用例集——执行unittest测试用例集 runner.run(suite)

import unittest
  from selenium import webdriver
  import time as t
  from selenium.webdriver.common.by import By
  from selenium.webdriver.common.action_chains import ActionChains
  import win32api
  import HTMLTestRunner
  import unittest
  #-*- coding:utf-8 -*-
  def all_case():
      case_dir = r"E:\pythontrain\unittest_train\case\test_case"  #这里填写你刚刚创建的case文件夹的目录
      testcase = unittest.TestSuite()
      discover = unittest.defaultTestLoader.discover(case_dir,pattern='test*.py',top_level_dir=None)#discover方法筛选出来的用例,循环添加到测试套件中
      for test_suit in discover:
          for test_case in test_suit:
              testcase.addTest(test_case)#添加用例到testcase
          print(testcase)
          return testcase
  if __name__=="__main__":
      # runner = unittest.TextTestRunner()
      report_path = r"E:\pythontrain\unittest_train\report\html\result.html"  # 这里就是你创建的result.html
      fp = open(report_path, 'wb')
      runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'这是我的自动化测试报告', description=u'测试用例执行情况:')
      # run所有用例
      runner.run(all_case())
      fp.close()

五、unittest完成HTML测试报告的生成

禅道调用Python接口导入测试用例_软件测试_04