基于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使用百度翻译进行中翻英示例
Apr 14 Python
Python中自定义函数的教程
Apr 27 Python
Python xlrd读取excel日期类型的2种方法
Apr 28 Python
深入解析Python设计模式编程中建造者模式的使用
Mar 02 Python
Python求算数平方根和约数的方法汇总
Mar 09 Python
python shell根据ip获取主机名代码示例
Nov 25 Python
浅谈django model postgres的json字段编码问题
Jan 05 Python
使用tensorflow实现线性svm
Sep 07 Python
Python两个字典键同值相加的几种方法
Mar 05 Python
python 将日期戳(五位数时间)转换为标准时间
Jul 11 Python
基于python爬取有道翻译过程图解
Mar 31 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
Nov 02 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
星际争霸任务指南——人族
2020/03/04 星际争霸
基于PHP读取csv文件内容的详解
2013/06/18 PHP
php实现的一个很好用HTML解析器类可用于采集数据
2013/09/23 PHP
PHP实现XML与数据格式进行转换类实例
2015/07/29 PHP
微信支付开发告警通知实例
2016/07/12 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
jQuery ctrl+Enter shift+Enter实现代码
2010/02/07 Javascript
Html中JS脚本执行顺序简单举例说明
2010/06/19 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
2015/06/18 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
实例详解JavaScript获取链接参数的方法
2016/01/01 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
2016/05/03 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
Angular2 (RC4) 路由与导航详解
2016/09/21 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
Three.js中网格对象MESH的属性与方法详解
2017/09/27 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
Python生成随机密码
2015/03/10 Python
python如何使用unittest测试接口
2018/04/04 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
python的faker库用法
2019/11/28 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
python3通过udp实现组播数据的发送和接收操作
2020/05/05 Python
Python如何读取、写入CSV数据
2020/07/28 Python
python 提高开发效率的5个小技巧
2020/10/19 Python
加拿大最大的书店:Indigo
2017/01/01 全球购物
阿迪达斯法国官方网站:adidas法国
2018/03/20 全球购物
《童年》教学反思
2014/02/18 职场文书
挂牌仪式主持词
2014/03/20 职场文书
改革共识倡议书
2014/08/29 职场文书
幸福家庭事迹材料
2014/12/20 职场文书
跑出一片天观后感
2015/06/08 职场文书
党员反腐倡廉学习心得体会
2015/08/15 职场文书
公司年会主持词范文!
2019/05/07 职场文书