基于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 导入模块和解决文件句柄找不到问题
Dec 15 Python
python+opencv实现摄像头调用的方法
Jun 22 Python
Python中栈、队列与优先级队列的实现方法
Jun 30 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
Aug 08 Python
python实现XML解析的方法解析
Nov 16 Python
Python 使用 prettytable 库打印表格美化输出功能
Dec 26 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
Feb 16 Python
浅谈Python中range与Numpy中arange的比较
Mar 11 Python
django model object序列化实例
Mar 13 Python
Keras中的多分类损失函数用法categorical_crossentropy
Jun 11 Python
如何解决cmd运行python提示不是内部命令
Jul 01 Python
python实现不同数据库间数据同步功能
Feb 25 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
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
2013/04/08 PHP
PHP准确取得服务器IP地址的方法
2015/06/02 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
2020/08/06 PHP
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
JavaScript 拾碎[三] 使用className属性
2010/10/16 Javascript
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
为Javascript中的String对象添加去除左右空格的方法(示例代码)
2013/11/30 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
2014/05/14 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
2014/11/23 Javascript
node.js中的url.format方法使用说明
2014/12/10 Javascript
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
js轮播图无缝滚动效果
2017/06/17 Javascript
浅析Vue实例以及生命周期
2018/08/14 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
axios封装与传参示例详解
2020/10/18 Javascript
vuex的使用和简易实现
2021/01/07 Vue.js
Python实现读写INI配置文件的方法示例
2018/06/09 Python
如何安装并使用conda指令管理python环境
2019/07/10 Python
Windows 下python3.8环境安装教程图文详解
2020/03/11 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
Python实现仿射密码的思路详解
2020/04/23 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
html5指南-7.geolocation结合google maps开发一个小的应用
2013/01/07 HTML / CSS
Html5移动端适配IphoneX等机型的方法
2019/06/25 HTML / CSS
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
Boden美国官网:英伦原创时装品牌
2017/07/03 全球购物
美国顶级品牌男士大码服装店:DXL
2017/08/30 全球购物
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
常用UNIX 命令(Linux的常用命令)
2013/07/10 面试题
揭牌仪式策划方案
2014/05/28 职场文书
纪念九一八事变演讲稿1000字
2014/09/14 职场文书
焦点访谈观后感
2015/06/11 职场文书
2016年全国爱眼日宣传教育活动总结
2016/04/05 职场文书
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫