selenium3 web自动化测试框架 三:Unittest介绍及项目实战中的运用

unittest介绍及运用,可以参考之前写的文章,除了未结合web自动化演示,基础知识都有了

https://www.cnblogs.com/wuzhiming/p/8858305.html

unittest在自动化中的基础使用


下例演示用例的运行

# -*-  coding:utf-8 -*-
import unittest
from selenium import webdriver
from business.register_business import RegisterBusiness

class TestLoginPage(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        print("所有步骤前置操作(测试计划):测试计划之前只执行一次")

    @classmethod
    def tearDownClass(cls):
        print("所有步骤后置操作(测试计划):测试计划结束后只执行一次")

    def setUp(self):
        print("每条用例执行的前置步骤")
        self.driver = webdriver.Chrome()
        url = "http://www.5itest.cn/register"
        self.driver.get(url)
        self.driver.maximize_window()
        self.register_business = RegisterBusiness(self.driver)

    def tearDown(self):
        print("每条测试用例的后置步骤")
        self.driver.close()

    def test_base_case(self):
        test_login = self.register_business.base_case("[email protected]","admin","123456")

    def test_login_email_error(self):
        test_loginemailerror = self.register_business.login_email_error("1","admin","123456")

    @unittest.skip("就是不执行下面的用例")
    def test_must_run(self):
        print("必须执行我")

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

如果想自定义用例的运行顺序可以参考上面链接中的用例操作即可

单次运行多个文件中的大量用例


演示用例1

# -*-  coding:utf-8 -*-
‘‘‘
filename : unittest_test1.py
‘‘‘
import unittest
from selenium import webdriver
from business.register_business import RegisterBusiness

class TestLoginPage(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        print("All 只执行一次")

    @classmethod
    def tearDownClass(cls):
        print("End 只执行一次")

    def setUp(self):
        print("start 每条用例执行的前置步骤")

    def tearDown(self):
        print("end 每条测试用例的后置步骤")

    def test_base_case1(self):
        print("第一条用例")

    def test_base_case2(self):
        print("第二条用例")

    @unittest.skip("就是不执行下面的用例")
    def test_must_run(self):
        print("必须执行我")

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

演示用例2

# -*-  coding:utf-8 -*-
‘‘‘
filename:unittest_test2.py
‘‘‘

import unittest

class TestLoginPage(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        print("All 只执行一次")

    @classmethod
    def tearDownClass(cls):
        print("End 只执行一次")

    def setUp(self):
        print("start 每条用例执行的前置步骤")

    def tearDown(self):
        print("end 每条测试用例的后置步骤")

    def test_base_caseA(self):
        print("第一条用例")

    def test_base_caseB(self):
        print("第二条用例")

    def test_must_runC(self):
        print("必须执行我")

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

单次运行上述两个文件中的用例代码

# -*-  coding:utf-8 -*-
import unittest
import os

class MyTestCase(unittest.TestCase):
    def test_allcase(self):
        #os.getcwd()获取当前路径
        #os.path.join 连接两个或更多的路径名组件
        case_path = os.path.join(os.getcwd())
        suite = unittest.defaultTestLoader.discover(case_path,‘unittest_t*.py‘)
        unittest.TextTestRunner().run(suite)

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

生成测试报告


# -*-  coding:utf-8 -*-
import unittest
import os
import datetime
from HTMLTestRunner_cn import HTMLTestRunner

class TestLoginPage(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        print("All 只执行一次")

    @classmethod
    def tearDownClass(cls):
        print("End 只执行一次")

    def setUp(self):
        print("start 每条用例执行的前置步骤")

    def tearDown(self):
        print("end 每条测试用例的后置步骤")

    def test_base_case1(self):
        print("第一条用例")

    def test_base_case2(self):
        print("第二条用例")

    @unittest.skip("就是不执行下面的用例")
    def test_must_run(self):
        print("必须执行我")

if __name__ == "__main__":
    report = os.path.join(‘F:/python_stack/python_autotest/report/report.html‘)
    suite1 = unittest.TestSuite()
    suite1.addTests([TestLoginPage("test_base_case1"),TestLoginPage("test_base_case2"),TestLoginPage("test_must_run")])
    with open(report,‘wb‘) as f:
        runner2 = HTMLTestRunner(stream=f,title=‘Test Result‘,description=‘operator:admin‘,verbosity=2)
        runner2.run(suite1)
        print(‘report is done‘)
    #os.path.dirname(__file__)的作用是 返回脚本的路径,即文件路径中所在的目录
    report_path = os.path.dirname(report)
    print(report_path)
    #os.chdir() 方法用于改变当前工作目录到指定的路径。
    os.chdir(report_path)
    stamp = datetime.datetime.strftime(datetime.datetime.now(),"%Y-%m-%d-%H-%M-%S")
    report_new_name = TestLoginPage.__name__ +  ‘report‘+ stamp +‘.html‘
    os.rename(‘report.html‘,report_new_name)

原文地址:https://www.cnblogs.com/wuzhiming/p/11790029.html

时间: 2024-11-05 22:00:08

selenium3 web自动化测试框架 三:Unittest介绍及项目实战中的运用的相关文章

Web自动化测试框架Watir(基于Ruby) - 第2章 使用Watir写自动化测试脚本

一.先来看一个小DEMO     通过上一篇博文<Web自动化测试框架Watir(基于Ruby) - 第1章 Windows下安装与部署>的介绍,我们已经有了完整Watir运行环境,现在我们可以来试用一下Watir,来对其进一步了解: 图1-1 测试脚本:测试百度搜索     代码如下: #encoding: utf-8 #测试百度搜索 require 'watir' puts "打开浏览器" browser = Watir::Browser.new sleep 2 #延时

Web自动化测试框架改进

Web自动化测试框架(WebTestFramework)是基于Selenium框架且采用PageObject设计模式进行二次开发形成的框架. 一.适用范围:传统Web功能自动化测试.H5功能自动化测试. 二.兼容性:建议使用火狐或谷歌浏览器,因为Selenium与其兼容性最好. 三.框架改进亮点(比Selenium框架优的地方): 1. 采用PageObject设计模式,将某个页面的所有元素(包含控件)属性及元素操作封装在1个Class里面,如下所示: 这样做的目的是为了解耦,即测试代码与被测页

Windows环境搭建Web自动化测试框架Watir(基于Ruby) 第1章

一.前言     Web自动化测试一直是一个比较迫切的问题,对于现在web开发的敏捷开发,却没有相对应的敏捷测试,故开此主题,一边研究,一边将Web自动化测试应用于工作中,进而形成能够独立成章的博文,希望能够为国内web自动化测试的发展做一点绵薄的贡献吧,笑~ 二.Watir搭建流程 图1-1 需要安装的工具     下载地址:http://railsinstaller.org/     因为安装Ruby还需要用到其他的一些开发工具集,所以建议从网站http://railsinstaller.o

Windows环境搭建Web自动化测试框架Watir(基于Ruby)

web自动化测试一直是一个比较迫切的问题 图1-1 需要安装的工具 http://railsinstaller.org/ 因为安装Ruby还需要用到其他的一些开发工具集,所以建议从网站http://railsinstaller.org/ 下载,而且使用该安装包的话,它会帮你把环境变量也设置完毕,我使用的版本是:railsinstaller-2.2.4.exe,建议下载最新版本. 开始安装RailsInstaller工具包,安装到默认位置即可. 这个对勾建议打上,它会帮你配置git和ssh,安装过

使用jenkins + python + selenium一步步搭建web自动化测试“框架”(1) - 各部件简介

原先搭建过一个自动化测试框架,迷迷糊糊不求甚解,算是搭建了一个仅限于能用的.根本算不上框架的玩意儿. 现在回过头来好好看看究竟每一步是怎么联系起来的,是怎么运行起来的. 本次博客先说说各部件都是干什么的. 各部件简介: jenkins: 提到jenkins就不能不提持续集成.jenkins是一个持续集成方面很好很成熟的开源软件,jenkins本身又是一个java的开源项目,提供了很多功能丰富的插件. 那到底持续集成是个什么东西?整这么多专业名词一点都不接地气.说说我的白话理解: 先看看持续和集成

python之web自动化测试框架

梳理下搭建web自动化框架的流程: 创建目录: cases:存放测试用例,unittest框架要求用例名必须以test开头,所以命名test_case.py test_case.py代码如下:继承unittest.TestCase类下面的方法setupclass(),teardownclass().然后把用例放进去.每个页面作为一个用例 '''这里写业务的用例 用例要用到page unittest''' from page.basePage import Page import unittest

自动化测试框架Cucumber和Robot Framework的实战对比

自动化测试框架Cucumber和RobotFramework的实战对比 一.摘要 自动化测试可以快速自动完成大量测试用例,节约巨大的人工测试成本:同时它需要拥有专业开发技能的人才能完成开发,且需要大量时间进行维护(在需求经常变化的情况下),所以大部分具有很好开发技能的人员不是很愿意编写自动化用例.但由于软件规模的高速增长,人力资源的逐步稀缺,自动化测试已是势在必行. 对于自动化测试首先需要保证其功能是对客户有价值的和正确可用的.而这一切的基础就是用例要能测试客户的需求,期望,最好能让客户参与到测

net core体系-web应用程序-4asp.net core2.0 项目实战(1)-2项目说明和源码下载

本文目录1. 摘要2. Window下运行 3.linux下运行4. 开发记录5. 总结 1.概要 写<Asp.Net Core 2.0 项目实战>系列断断续续已经很长时间了,期间很多朋友要求开放源码,但是项目代码一直有很多问题,就算勉强开源出来大家看起来也比较费劲,运行起来也看不到实际的效果.在公司平时真的是太忙了,很少有时间去系统的整理一个框架,只能以学习这种形式边学边做.承诺大家开源出来此项目我做到了,虽然项目依然有很多问题,我接下来会再完善.功能暂时不会再增加了,暂时先做到权限管理,以

net core体系-web应用程序-4asp.net core2.0 项目实战(1)-3项目架构说明

本文目录1. 摘要2. 框架介绍 3. 权限管理之多一点说明4. 总结 1.  摘要 NCMVC角色权限管理框架是由最近练习Net Core时抽时间整理的系统,后续能不能发展成一个cms还要看朋友们是否有需要或时间是否充实.这里NCMVC主要还是给想要学习接触Asp.Net Core2.0的朋友们提供一些借鉴以及坑点提醒等,项目现在还有很多不足,以后会尽量完善一些.写这个系列也没有完全按照原来列好的目录正序来写,倒叙/插叙都有也是项目练习到了顺便记录下来仅此而已.中间有朋友留言说没有源码理解起来