练习一: 使用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测试框架完成自动化测试并生成报告-实例练习相关推荐

  1. python自动化测试生成报告_使用python测试框架完成自动化测试并生成报告-实例练习...

    练习一: 使用unittest 完成自动化测试并使用HttpTestRunner生成报告 ''' 1.写个简单的计算器功能,大小写转换功能,随机生成字符串功能 2.编写测试用例,不同的数据(你能想到的 ...

  2. python sql脚本_使用Python SQL脚本进行数据采样

    python sql脚本 介绍 (Introduction) The Python programming language is object oriented, easy to use and, ...

  3. python并发测试脚本语言_python并发测试脚本

    这两天要做性能测试,自己没事用python写了个脚本,用于压力测试 # -*- coding: utf8 -*- # code by Shurrik import threading, time, h ...

  4. python写脚本入门-学习Python的教程?:python 脚本菜鸟教程

    学习Python的教程? Python作为一门面向对象的性语言,其实它的学习也很简单 - 配置 - Python基础(语法..数据类型.高级变量.函数.Python高级特性) - 面向对象编程.面向对 ...

  5. python挂机脚本怎么运行,Python实现自动挂机脚本(基础篇)

    博客原文[不好吃の蛋蛋] 完整代码 不知不觉肝阴阳师也快一年了,对这游戏真是又爱又恨,最近刚刚发布了PC版,突然很想尝试着写个脚本挂机,话不多说进入正题. 简单的鼠标操作 游戏挂机脚本,无非就是自动移 ...

  6. java appium_Android应用开发之AS+Appium+Java+Win自动化测试之Appium的Java测试脚本封装(Android测试)...

    本文将带你了解Android应用开发AS+Appium+Java+Win自动化测试之Appium的Java测试脚本封装(Android测试),希望本文对大家学Android有所帮助. 一.为什么需要封 ...

  7. python软件测试脚本_基于Python的实时嵌入式软件测试脚本

    摘 要:计算机技术应用的不断普及,使得实时嵌入式软件在航空.航天.工业控制.交通.医疗和军事安全等诸多领域发挥着愈来愈重要的作用.不难看出,这些领域对软件的可靠性有很严格的要求,因为该领域的软件一旦失 ...

  8. python自动化脚本-一 个 Python 自动化脚本引发的惨案!把公司搞死了?

    一个法国程序员 Nicolas Beauvais 在推特上发了一系列帖子,控诉 一个云服务商搞死他们公司了,从而引发了一场骚动. 他是一家仅有 2 人的微型 AI 创业公司 Raisup 的 CTO, ...

  9. python扫雷脚本_利用 Python 实现 自动扫雷 小脚本

    原标题:利用 Python 实现 自动扫雷 小脚本 自动扫雷一般分为两种,一种是读取内存数据,而另一种是通过分析图片获得数据,并通过模拟鼠标操作,这里我用的是第二种方式.一.准备工作1.扫雷游戏 我是 ...

最新文章

  1. mysql中所有时间类型_MySQL 中的日期时间类型
  2. 大厂首发!java敏捷开发模式面试题
  3. Linux内存管理 - 页表的映射过程初步了解
  4. java hashmap实例,关于java中的HashMap的实例操作
  5. location php,Nginx服务器中的location配置详解
  6. php网站用框架与不用的区别,做前端网页是不是必须要用网页框架
  7. C#参考:Linq 概述
  8. NLP自然语言处理必修清单(修炼法则)
  9. 买麦网重要域名遭抢注 质疑遭受阿里巴巴干扰
  10. request.getAttribute()和request.getParameter()两个方法的区别
  11. 各种缩写名词汇总,力求最全面最精确
  12. 计算机辅助设计与制造考试重点,2016计算机辅助设计与制造复习内容
  13. 人员轨迹监测系统设计
  14. c语言vt码的用法,你可以使用vt100转义码c ++的十六进制颜色值
  15. QT 之QPainter画点
  16. 数三角(triangle)
  17. OPENGL 简单图形绘制
  18. linux运维必备178个命令
  19. 洛谷P2486 染色
  20. 冷门高性价比蓝牙耳机,不是烧友一定很少知道的五大蓝牙耳机品牌

热门文章

  1. 【转】什么是PON口
  2. matlab米氏方程作图,双倒数作图法米氏方程
  3. 怎么理解分布式链路追踪技术?
  4. Python turtle库绘制同心圆
  5. iPad怎么下载pdf 通过chrome
  6. 一年代码功能点的创新性怎么写_部编版教材的七个创新点
  7. linux日志分析步骤,关于linux:graylog日志分析系统上手教程
  8. HDU - 2548 两军交锋
  9. FIFA23反作弊报错ea anticheat launcher is running解决办法
  10. 第5期:大学生入职必备技能之二