基于Python测试程序是否有错误


Posted in Python onMay 16, 2020

1、首先介绍简单的try......except尝试运行的放例如下面的图和代码来简单介绍下:

def test(x,y):
  print(x+y)
try:
  test()
except:
  print('Error')
test(2,4)

test测试的函数,没传参数的x,y,函数结果是要答应x加y的和

try:试着执行test()函数,正常就执行函数并打印x加y的和

except:否则 打印'Error' 因为我这test没有给x,y定义传参数,所以会走到except

结果:

基于Python测试程序是否有错误

2、我们以上次排球比赛程序为例子做测试:

from random import random
def printIntro():     #打印程序介绍信息
  print("10号张颖慧进行比赛分析结果:")
  print("这个程序模拟两个选手A和B的某种竞技比赛")
  print("程序运行需要A和B的能力值(以0到1之间的小数表示)")
def getInputs():      #获得程序运行参数
  a = eval(input("请输入选手A的能力值(0-1): "))
  b = eval(input("请输入选手B的能力值(0-1): "))
  n = eval(input("模拟比赛的场次: "))
  return a, b, n
def simNGames(n, probA, probB):  # 进行N场比赛
  winsA, winsB = 0, 0
  for i in range(n):
    for j in range(7):      #进行7局4胜的比赛
      scoreA, scoreB = simOneGame(probA, probB)
      if scoreA > scoreB:
        winsA += 1
      else:
        winsB += 1
  return winsA, winsB
try:
  simNGames(0.55)
except:
  print("simNGames Error")
  
def gameOver(a,b):        #正常比赛结束
  return a==24 or b==24
def gameOver2(a,b):       #进行抢12比赛结束
  if abs((a-b))>=2:
    return a,b
def simOneGame(probA, probB):     #进行一场比赛
  scoreA, scoreB = 0, 0      #初始化AB的得分
  serving = "A"        
  while not gameOver(scoreA, scoreB):   #用while循环来执行比赛
    if scoreA==10 and scoreB==10:
      return(simtwoGame2(probA,probB))
    if serving == "A":
      if random() < probA:      ##用随机数生成胜负
        scoreA += 1
      else:
        serving="B"
    else:
      if random() < probB:
        scoreB += 1
      else:
        serving="A"
  return scoreA, scoreB
try:
  simOneGame(0.54)
except:
  print("simNGame Error")
  
def simtwoGame2(probA,probB):
  scoreA,scoreB=23,23
  serving = "A"
  while not gameOver2(scoreA, scoreB):
    if serving == "A":
      if random() < probA:
        scoreA += 1
      else:
        serving="B"
    else:
      if random() < probB:
        scoreB += 1
      else:
        serving="A"
  return scoreA, scoreB
try:
  simtwoGame2(0.44,0.66)
except:
  print("simNGame2 Error")
  
def printSummary(winsA, winsB):
  n = winsA + winsB
  print("竞技分析开始,共模拟{}场比赛".format(n))
  print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA, winsA/n))
  print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB, winsB/n))
def main():
  printIntro()
  probA, probB, n = getInputs()
  winsA, winsB = simNGames(n, probA, probB)
  printSummary(winsA, winsB)
main()

这个代码中,在一些函数后用try.....except测试了一遍,如果有错误会分别对某个函数进行报错。

因为小编在参数中故意写错,故会出现错误

运行结果如下:

基于Python测试程序是否有错误

当然还可以执行多个函数及条件的测试都可以,这样可以实现自动化测试业务代码,还可以穿插在程序中你需要的地方

做检测等,这样你的程序会按流程走,这块又可以得到你要的测试效果。来看看代码如下:

x = 0
lis_y = [i for i in range(80,85)]

def test(x,y):
  print(x+y," ")

def test1(x,y):
  print(x*y)

try:
  while x < 20:
    for y in lis_y:
      test(x,y)
      test1(x,chr(y))
      x+=1
except:
  print('Error')

运行结果如下:

基于Python测试程序是否有错误

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python subprocess模块学习总结
Mar 13 Python
在Python中用split()方法分割字符串的使用介绍
May 20 Python
Python实现字典的key和values的交换
Aug 04 Python
Python3连接MySQL(pymysql)模拟转账实现代码
May 24 Python
关于python写入文件自动换行的问题
Jun 23 Python
Python3 SSH远程连接服务器的方法示例
Dec 29 Python
10 分钟快速入门 Python3的教程
Jan 29 Python
django admin后台添加导出excel功能示例代码
May 15 Python
django框架基于模板 生成 excel(xls) 文件操作示例
Jun 19 Python
python中68个内置函数的总结与介绍
Feb 24 Python
django 解决扩展自带User表遇到的问题
May 14 Python
使用keras实现BiLSTM+CNN+CRF文字标记NER
Jun 29 Python
关于matplotlib-legend 位置属性 loc 使用说明
May 16 #Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
May 16 #Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
May 16 #Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
May 16 #Python
Python验证码截取识别代码实例
May 16 #Python
基于plt.title无法显示中文的快速解决
May 16 #Python
基于python生成英文版词云图代码实例
May 16 #Python
You might like
DC《小丑》11项提名领跑奥斯卡 Netflix成第92届奥斯卡提名最大赢家
2020/04/09 欧美动漫
PHP 日期时间函数的高级应用技巧
2009/10/10 PHP
php递归方法实现无限分类实例代码
2014/02/28 PHP
PHP中应该避免使用同名变量(拆分临时变量)
2015/04/03 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
PHP微信发送推送消息乱码的解决方法
2019/02/28 PHP
JavaScript监测ActiveX控件是否已经安装过的代码
2008/09/02 Javascript
File, FileReader 和 Ajax 文件上传实例分析(php)
2011/04/27 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
jquery不常用方法汇总
2015/07/26 Javascript
JS实现仿新浪黄色经典滑动门效果代码
2015/09/27 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
Node.js 基础教程之全局对象
2017/08/06 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
详解微信小程序支付流程与梳理
2019/07/16 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
Python实现抓取网页生成Excel文件的方法示例
2017/08/05 Python
Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
2018/04/19 Python
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
Python 实现打印单词的菱形字符图案
2020/04/12 Python
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
美国知名眼镜网站:Target Optical
2020/04/04 全球购物
投标文件签署授权委托书范本
2014/10/12 职场文书
普通党员整改措施
2014/10/24 职场文书
营销计划书
2015/01/17 职场文书
2015年后勤工作总结范文
2015/04/08 职场文书
幼儿园开学温馨提示
2015/07/15 职场文书
redis限流的实际应用
2021/04/24 Redis
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL