基于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语言中的按位运算符
Nov 26 Python
在Windows8上的搭建Python和Django环境
Jul 03 Python
Python基于动态规划算法计算单词距离
Jul 25 Python
详解Python实现多进程异步事件驱动引擎
Aug 25 Python
python3+dlib实现人脸识别和情绪分析
Apr 21 Python
Python实现将Excel转换成xml的方法示例
Aug 25 Python
Flask核心机制之上下文源码剖析
Dec 25 Python
python 哈希表实现简单python字典代码实例
Sep 27 Python
基于python实现破解滑动验证码过程解析
May 28 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
Jun 03 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
python 使用tkinter与messagebox写界面和弹窗
Mar 20 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
PHP编程中字符串处理的5个技巧小结
2007/11/13 PHP
Php获取金书网的书名的实现代码
2010/06/11 PHP
PHP中文编码小技巧
2014/12/25 PHP
如何把php5.3版本升级到php5.4或者php5.5
2015/07/31 PHP
PHP共享内存使用与信号控制实例分析
2018/05/09 PHP
潜说js对象和数组
2011/05/25 Javascript
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
跟我学习javascript的最新标准ES6
2015/11/20 Javascript
基于javascript html5实现多文件上传
2016/03/03 Javascript
js操作数据库实现注册和登陆的简单实例
2016/05/26 Javascript
详解JavaScript对象类型
2016/06/16 Javascript
jQuery实现级联下拉框实战(5)
2017/02/08 Javascript
详解Vue.js分发之作用域槽
2017/06/13 Javascript
详解用vue编写弹出框组件
2017/07/04 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
2018/08/13 Javascript
在小程序中使用canvas的方法示例
2018/09/17 Javascript
Python程序设计入门(2)变量类型简介
2014/06/16 Python
深入理解Django的自定义过滤器
2017/10/17 Python
利用Python如何生成hash值示例详解
2017/12/20 Python
详解Numpy中的广播原则/机制
2018/09/20 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
Python OpenCV视频截取并保存实现代码
2019/11/30 Python
python烟花效果的代码实例
2020/02/25 Python
Python random库使用方法及异常处理方案
2020/03/02 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
Django xadmin安装及使用详解
2020/10/26 Python
eBay德国站:eBay.de
2017/09/14 全球购物
台湾专柜女包:KINAZ
2019/12/26 全球购物
一个J2EE项目团队的主要人员组成是什么
2012/06/04 面试题
工程概预算专业毕业生求职信
2013/10/04 职场文书
毕业设计计划书
2014/01/09 职场文书
公司接待方案
2014/03/08 职场文书
演讲稿格式范文
2014/05/19 职场文书
办公室岗位职责
2015/02/04 职场文书
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
2021/05/27 Servers
Django模型层实现多表关系创建和多表操作
2021/07/21 Python