自动化测试之:python+unittest+selenium

目录

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

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

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

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

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


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

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('https://juejin.cn/post/6844904135343472654')
            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测试报告的生成

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值