批量生成python自動化測試腳本


  先前有家供應商與我們合作開發自動化工程,采用的py unittest作為腳本運行框架。我發現他們出的腳本都是挨個手寫的,格式上也是參差不齊。所以有了根據用例表批量生成腳本的一段小代碼

對一個測試腳本必須存在哪些內容,我認為若滿足以下三點要求,就算一個合格的測試腳本了。

1、測試用例的描述,包含測試目的,測試詳細步驟,預期結果等

2、簡潔,易於閱讀和維護的代碼結構

3、詳細的運行LOG記錄與測試報告

所以很明顯以上腳本結構上是不夠完整的,測試執行人員可能都不知道這個腳本測的什么內容。改之

根據用例表批量生成腳本

我的用例管理表如下,xlsx的表格。以下內容是隨便舉的一個例子(可能測試用例寫得不正確)

代碼實現的邏輯:解析用例管理表,生成測試腳本框架

# !/usr/bin/env python
# -*- coding:utf-8 -*-
# !python3
__author__ = "xxx"
"""自動化腳本生成工具"""
import os
import xlrd
import time

TestCaseName = ""
TestCaseDescription = ""
TestCasePreCondition = ""
TestCaseStep = ""
TestCaseExpectResult = ""
TestEnvironment = ""
TestScriptName = ""
cur_path = os.getcwd()


def scripts_template():
    testcases = os.path.join(cur_path, u"用例模板.xlsx")
    data = xlrd.open_workbook(r'%s' % testcases)
    table = data.sheet_by_index(0)
    n_rows = table.nrows
    n_cols = table.ncols
    for i in range(1, n_rows):
        TestCaseName = table.cell_value(i, 1)
        TestCaseDescription = table.cell_value(i, 2)
        TestCasePreCondition = table.cell_value(i, 3)
        TestCaseStep = table.cell_value(i, 4)
        TestCaseExpectResult = table.cell_value(i, 5)
        TestEnvironment = table.cell_value(i, 0)
        TestScriptName = "test_{0}".format(TestCaseName)  #符合unittest測試用例定義的識別條件, 以"test"開頭
        filename = os.path.join(cur_path, "{0}.py".format(TestScriptName))
        with open(filename, 'w', encoding='utf-8') as out:
            out.write('''# !/usr/bin/env python
# -*- coding:utf-8 -*-

"""
#-----------------------------------------------------------------------
用例名稱: {0}
用例描述: {1}
前置條件: 
{2}
測試步驟: 
{3}
預期結果: 
{4}
測試環境: {5}
作者:{6}
日期:{7}
#-----------------------------------------------------------------------
"""

import unittest


class {8}(unittest.TestCase):

    def setUp(self):
        #TODO 添加用例執行前置條件
        pass

    def testRun(self):
        #TODO 添加用例執行測試步驟
        pass

    def tearDown(self):
        #TODO 添加恢復測試環境操作
        pass

if __name__ == '__main__':
    unittest.main()'''.format(TestCaseName, TestCaseDescription, TestCasePreCondition,
                      TestCaseStep, TestCaseExpectResult, TestEnvironment, __author__,
                      time.strftime('%Y-%m-%d'), TestScriptName));
    print("generate scripts finished!")


if __name__ == "__main__":
    scripts_template()
View Code

運行一下以上測試腳本生成代碼。生成的腳本如下:

 1 # !/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 """
 5 #-----------------------------------------------------------------------
 6 用例名稱: case_01_01_01_01
 7 用例描述: 測試天氣提示刷新
 8 前置條件: 
 9 打開天氣APP
10 測試步驟: 
11 1.后台設置今日天氣為多雲,查看App提示是否更新。
12 預期結果: 
13 頁面天氣提示刷新為多雲
14 測試環境: Phone
15 作者:xxx
16 日期:2019-01-08
17 #-----------------------------------------------------------------------
18 """
19 
20 import unittest
21 
22 
23 class test_case_01_01_01_01(unittest.TestCase):
24 
25     def setUp(self):
26         #TODO 添加用例執行前置條件
27         pass
28 
29     def testRun(self):
30         #TODO 添加用例執行測試步驟
31         pass
32 
33     def tearDown(self):
34         #TODO 添加恢復測試環境操作
35         pass
36 
37 if __name__ == '__main__':
38     unittest.main()

以上生成的腳本看起來就比較清晰了,再添加自己封裝后的測試接口,整體結構上非常簡潔明了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM