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

发表于:2024-4-16 09:23

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:51CTO博客

  一、准备条件——使用禅道自己搭建和部署测试环境
  1)在官网下载禅道禅道11.7版本发布,主要修复Bug,升级禅道客户端 - 禅道下载 - 禅道开源项目管理软件->放在根目录下解压处XAMPP文件夹->点击start.exe->点击访问禅道即可进入登录页面,在左下角有一个Apache的用户验证访问选项,测试的时候可以选择不勾选这个选项,直接进入禅道的登录页面->禅道的登录账号和密码默认是:账号:admin 密码:123456,首次登录需要修改密码。
  二、框架总体规划及完成禅道页面登录
  如下图,我们需要做一些准备工作搭建测试框架,首先需要新建新建测试工程,我在这里建立的是unittest_train,随后在工程下新建如下5个模块或代码文件。
  1. 用例case:包含测试用例文件夹和BUG用例文件夹,test1.py和test2.py分别用不同的def函数编写不同的测试用例脚本。
  2. log日志。
  3. report:这个文件夹用来输出测试报告及测试截图。
  4. untils。
  5. run.py:这个文件用来批量运行想要测试的用例集,完成到这里准备工作差不多就完成了,接着需要开始创建测试用例了。
  三、在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测试报告的生成
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号