python测试脚本实例-使用python测试框架完成自动化测试并生成报告-实例练习
练习一: 使用unittest 完成自动化测试并使用HttpTestRunner生成报告
'''
1、写个简单的计算器功能,大小写转换功能,随机生成字符串功能
2、编写测试用例,不同的数据(你能想到的所有测试用例),并进行断言。除0的选择可以跳过skip,随机生成字符串功能可以断言是否包含你名字的缩写。
3、使用unittest框架+HTMLTestRunner,最后生成html报告
'''
import unittest
import os
import time
import logging
import ddt
from HTMLTestRunner import HTMLTestRunner
import random
testData1 = [{'a':5,'b':1,'x':'+','result':6},
{'a':5,'b':1,'x':'-','result':4},
{'a':5,'b':1,'x':'*','result':5},
{'a':5,'b':1,'x':'/','result':5}
]
testData2 = [{'string':'asd','stringType':'upper','result':'ASD'},
{'string': 'ASD', 'stringType': 'lower','result':'asd'}
]
#被测函数
class test_demo():
def jisuanqi(a,x,b):
if x == '+':
return a+b
elif x =='-':
return a-b
elif x == '*':
return a*b
elif x == '/':
return a/b
else:
logging.info('只支持数字加减乘除四则运算')
def translation(string,stringType):
if stringType == 'lower':
return string.lower()
elif stringType == 'upper':
return string.upper()
else:
print('ERROR:只支持大小写类型转换')
def random_string(num):
return random.random(num)
#测试函数
@ddt.ddt
class TestCases(unittest.TestCase):
@classmethod
def setUpClass(cls):
print('整个测试类运行前执行')
def setUp(self):
print("每个测试方法执行前运行一次")
def tearDown(self):
print("每个测试方法执行完后运行一次")
@ddt.data(*testData1)
def test_case_jisuanqi(self,data):
result = test_demo.jisuanqi(data['a'],data['x'],data['b'])
assert result == data['result']
@ddt.data(*testData2)
def test_case_translation(self,data):
result = test_demo.translation(data['string'],data['stringType'])
assert result == data['result']
def test_case_randomString(self):
pass
@classmethod
def tearDownClass(cls):
print("整个测试类运行完成后执行一次")
#测试报告
if __name__ == '__main__':
report_path = os.path.join(os.path.dirname(__file__), 'report')
now = time.strftime("%Y-%m-%d %H_%M_%S", time.localtime())
filename = report_path + "/" + now + "_result.html"
print('******************************************')
suite = unittest.TestSuite()
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestCases))
with open(filename, 'wb') as fp:
runner = HTMLTestRunner(
stream=fp,
title='测试报告',
description='测试用例')
runner.run(suite)
练习二:使用pytest完成自动化测试并用allure生成测试报告
'''
建立一个登陆模块的测试用例,一个人力资源模块的测试用例,其中包括增删改查4个小功能,查询不需要登陆。
使用pytest,allure的方式,技术上要有登陆依赖用Fixture,conftest实现,要添加人员时有参数化,数据驱动,
使用文件或list/dict的方式传入数据。通过allure的添加附加信息,及各种信息包括feature,story,step,attach,title,discription等。
'''
conftest.py
@pytest.fixture(scope = 'module')
def test_login(request):
user = request.param['user']
password = request.param['password']
if user != 'linda':
print('用户名错误')
elif password != '888888':
print('密码错误')
else:
print('登陆成功')
yield # 模块执行完case后 在最后执行一遍teardown操作。
print('执行teardown')
print('推出登陆')
Pytest.py
import allure
import pytest
import os
import subprocess
test_user_data = [{"user": "linda", "password": "888888"}]
test_user_data1 = [{"user": "linda", "password": "888888"},
{"user": "servenruby", "password": "123456"},
{"user": "linda", "password": "123456"}]
test_user_data2 = [{"name": "中国平安", "money": 999, "country": 'china'},
{"name": "阿里巴巴", "money": 888, "country": 'jepan'},
{"name": "拼多多", "money": 666, "country": 'USA'}]
@allure.feature('测试登录模块')
@pytest.mark.run(order = 1) #第一个执行
@pytest.mark.parametrize('test_login', test_user_data1, indirect=True)
class TestLogin():
def test_login_case1(self,test_login):
assert 1 == 1
@allure.feature('测试人事模块')
@pytest.mark.parametrize('test_login', test_user_data, indirect=True)
class TestPersion():
@allure.story('测试用例:新增人员')
@pytest.mark.parametrize('data',test_user_data2)
def test_persion_add(self,test_login,data):
with allure.step("步骤1"):
allure.attach('说明')
print('新增用户%s'%data['name'])
@allure.story('测试用例:删除新增的人员')
@pytest.mark.parametrize('data',test_user_data2)
def test_persion_del(self,test_login,data):
print('删除用户%s'%data['name'])
558 pytest -v -s PyTest.py --alluredir=./result/ 在测试执行期间收集结果
559 allure serve ./result/ 测试完成后查看实际报告, 在线看报告
python测试脚本实例-使用python测试框架完成自动化测试并生成报告-实例练习相关推荐
- python自动化测试生成报告_使用python测试框架完成自动化测试并生成报告-实例练习...
练习一: 使用unittest 完成自动化测试并使用HttpTestRunner生成报告 ''' 1.写个简单的计算器功能,大小写转换功能,随机生成字符串功能 2.编写测试用例,不同的数据(你能想到的 ...
- python sql脚本_使用Python SQL脚本进行数据采样
python sql脚本 介绍 (Introduction) The Python programming language is object oriented, easy to use and, ...
- python并发测试脚本语言_python并发测试脚本
这两天要做性能测试,自己没事用python写了个脚本,用于压力测试 # -*- coding: utf8 -*- # code by Shurrik import threading, time, h ...
- python写脚本入门-学习Python的教程?:python 脚本菜鸟教程
学习Python的教程? Python作为一门面向对象的性语言,其实它的学习也很简单 - 配置 - Python基础(语法..数据类型.高级变量.函数.Python高级特性) - 面向对象编程.面向对 ...
- python挂机脚本怎么运行,Python实现自动挂机脚本(基础篇)
博客原文[不好吃の蛋蛋] 完整代码 不知不觉肝阴阳师也快一年了,对这游戏真是又爱又恨,最近刚刚发布了PC版,突然很想尝试着写个脚本挂机,话不多说进入正题. 简单的鼠标操作 游戏挂机脚本,无非就是自动移 ...
- java appium_Android应用开发之AS+Appium+Java+Win自动化测试之Appium的Java测试脚本封装(Android测试)...
本文将带你了解Android应用开发AS+Appium+Java+Win自动化测试之Appium的Java测试脚本封装(Android测试),希望本文对大家学Android有所帮助. 一.为什么需要封 ...
- python软件测试脚本_基于Python的实时嵌入式软件测试脚本
摘 要:计算机技术应用的不断普及,使得实时嵌入式软件在航空.航天.工业控制.交通.医疗和军事安全等诸多领域发挥着愈来愈重要的作用.不难看出,这些领域对软件的可靠性有很严格的要求,因为该领域的软件一旦失 ...
- python自动化脚本-一 个 Python 自动化脚本引发的惨案!把公司搞死了?
一个法国程序员 Nicolas Beauvais 在推特上发了一系列帖子,控诉 一个云服务商搞死他们公司了,从而引发了一场骚动. 他是一家仅有 2 人的微型 AI 创业公司 Raisup 的 CTO, ...
- python扫雷脚本_利用 Python 实现 自动扫雷 小脚本
原标题:利用 Python 实现 自动扫雷 小脚本 自动扫雷一般分为两种,一种是读取内存数据,而另一种是通过分析图片获得数据,并通过模拟鼠标操作,这里我用的是第二种方式.一.准备工作1.扫雷游戏 我是 ...
最新文章
- mysql中所有时间类型_MySQL 中的日期时间类型
- 大厂首发!java敏捷开发模式面试题
- Linux内存管理 - 页表的映射过程初步了解
- java hashmap实例,关于java中的HashMap的实例操作
- location php,Nginx服务器中的location配置详解
- php网站用框架与不用的区别,做前端网页是不是必须要用网页框架
- C#参考:Linq 概述
- NLP自然语言处理必修清单(修炼法则)
- 买麦网重要域名遭抢注 质疑遭受阿里巴巴干扰
- request.getAttribute()和request.getParameter()两个方法的区别
- 各种缩写名词汇总,力求最全面最精确
- 计算机辅助设计与制造考试重点,2016计算机辅助设计与制造复习内容
- 人员轨迹监测系统设计
- c语言vt码的用法,你可以使用vt100转义码c ++的十六进制颜色值
- QT 之QPainter画点
- 数三角(triangle)
- OPENGL 简单图形绘制
- linux运维必备178个命令
- 洛谷P2486 染色
- 冷门高性价比蓝牙耳机,不是烧友一定很少知道的五大蓝牙耳机品牌