兄嘚们有没有这个烦恼,脚本失败了,抛出了错误信息,但是不明不白?
脚本感觉没问题,为啥就是失败报错呢?人肉再去登录系统访问页面,逐个排查,发现人工操作没问题?纠结,反复重试?浪费时间;
要是能在报告中看到真实的现场多好啊!!!来了,上菜,下面介绍怎么在运行中进行截图并迁入BeautifulReport报告中,这样才Beautiful嘛;
1、首先需要定义一个截图的方法
2、然后在业务脚本中调用此方法
3、注意:截图存放路径和图片名称传递,否则看不到图片还报错;
开干!
定义截图方法
def save_img(self, img_name):
current_path = os.getcwd() # 获取当前路径
cash_path = os.path.join(current_path, "img") # 设置用例路径
print("cash_path:"+cash_path)
if not os.path.exists(cash_path):
os.makedirs(cash_path)
result_path = os.path.join(cash_path)
self.driver.get_screenshot_as_file('{}/{}.png'.format(os.path.abspath(result_path), img_name))
调用截图方法
这里原作者有个设计不太好的点,add_test_img方法传入的图片名称,如果在业务脚本中没有执行截图,就会报错;
其实真实的使用场景应该是,不需要传入图片名称的,应该自动生成图片名称并迁入报告中【此方案后续会研究】
今天的方案是:
1、add_test_img方法传入图片名称;
2、业务脚本中有if判断,有些地方截图根据业务类型不会执行,有的会执行;
3、那么就会出现找不到图片的报错,我们需要修改BeautifulReport.py文件的源码;
第一步:传入图片名称
@ddt
class Suite_Test_ERP(unittest.TestCase):
@data(*ExcelRead(dataPath, 'ERP和数见'))
@BeautifulReport.add_test_img('售楼系统','成本系统','采招系统','费用系统','业财中心','固投系统','计划系统','督办任务管理','增值税发票','系统管理')
def test_ERP(self, data):
self.dr = newDriver(url)
driver = self.dr
driver.maxWindow()
# driver = webdriver.Chrome()
# driver.get(url)
# windowMax(driver)
driver.save_img('售楼系统')
第二步:业务判断,有的截图执行,有的不执行
if sys == "销售系统":
driver.save_img('售楼系统')
if sys == "成本系统":
driver.save_img('成本系统')
......
因为实际业务中sys可能会传入以上的任意一个或者全部传入;那么必定有一个不会执行,那么BeautifulReport.py 会报错,找不到图片
第三步:修改BeautifulReport.py ,让它找不到图片时,不报错
1、判断图片如果存在就执行原来逻辑,不存在就print一下,不执行原来的逻辑
2、因为上面没有图片时,不返回data对象,所以下面需要判断如果有返回图片地址就print到报告中,没有就不print,这样就不会报错了;
最终效果
后续会研究不需要传入图片名称,遇到报错,就自动截图并print到报告中;敬请期待!!!