文档库 最新最全的文档下载
当前位置:文档库 › python学习笔记-excel用例输入

python学习笔记-excel用例输入

python学习笔记-excel用例输入
python学习笔记-excel用例输入

python学习笔记(接口自动化框架V2.0)

这个是根据上次框架版本进行的优化

用python获取excel文件中测试用例数据

通过requets测试接口、并使用正则表达式验证响应信息内容生成xml文件测试报告

版本更新内容:

1. 整理了CreateTest.test_main()流程逻辑

2. 优化了testcase.xls文件格式

3. 添加了生成XML文件测试报告

代码如下:

1#!/usr/bin/env python

2# -*- coding: utf_8 -*-

3# 获取测试用例文件excel

4

5import xlrd

6import json

7

8

9class CreateExcel:

10def__init__(self):

11pass

12

13 @classmethod

14def open_excel(cls):

15 path = "testcase.xls"

16 workbook = xlrd.open_workbook(path)

17 table = workbook.sheets()[0]

18return table

19

20# 获取sheet

21

22 @classmethod

23def get_nrows(cls, table):

24 nrows = table.nrows

25return nrows

26

27# 获取行号

28

29 @classmethod

30def get_id(cls, table, nrows):

31 testid = []

32for i in range(1, nrows):

33 testid.append(table.cell(i, 0).value)

34return testid

35

36 @classmethod

37def get_name(cls, table, nrows):

38 testname = []

39for i in range(1, nrows):

40 testname.append(table.cell(i, 1).value)

41return testname

42

43# 获取用例name

44

45 @classmethod

46def get_data(cls, table, nrows):

47 testdata = []

48for i in range(1, nrows):

49try:

50 data = json.loads(table.cell(i, 2).value)

51 testdata.append(data)

52except ValueError:

53 testdata.append(None)

54return testdata

55

56# 获取data接口参数

57

58 @classmethod

59def get_url(cls, table, nrows):

60 testurl = []

61for i in range(1, nrows):

62 testurl.append(table.cell(i, 3).value)

63return testurl

64

65# 获取接口测试url

66

67 @classmethod

68def get_method(cls, table, nrows):

69 testmethod = []

70for i in range(1, nrows):

71 testmethod.append(table.cell(i, 4).value) 72return testmethod

73

74# 获取接口测试method

75

76 @classmethod

77def get_pattern(cls, table, nrows):

78 testpattern = []

79for i in range(1, nrows):

80 testpattern.append(table.cell(i, 5).value) 81return testpattern

82

83# 获取接口期望响应结果

84

1#!/usr/bin/env python

2# -*- coding: utf_8 -*-

3# 测试核心组件

4

5import requests

6import re

7from datetime import datetime

8from createexcel import CreateExcel

9from xml.dom import minidom

10import sys

11

12

13class CreateTest:

14 reload(sys)

15 sys.setdefaultencoding("utf-8")

16

17# 避免字符串写入文件出错

18

19def__init__(self):

20pass

21

22 @classmethod

23def test_api(cls, method, url, data):

24global results

25try:

26if method == "post":

27 results = requests.post(url, data)

28if method == "get":

29 results = requests.get(url, data)

30return results

31except Exception.__bases__:

32print"服务器访问失败"

33

34# 接口函数

35

36 @classmethod

37def test_on(cls):

38print"用例执行开始"

39

40 @classmethod

41def test_close(cls):

42print"用例执行结束"

43

44 @classmethod

45def test_result(cls, pa):

46global report

47try:

48 pattern = https://www.wendangku.net/doc/63690287.html,pile(pa)

49 match = pattern.search(testresults.text) 50if match.group() == pa:

51 report = "测试通过"

52except AttributeError:

53 report = "测试失败"

54return report

55

56# 正则表达式检测

57

58 @classmethod

59def test_http(cls, code):

60print"请求返回状态码: ", code

61

62 @classmethod

63def test_time(cls):

64 nowtime = datetime.today()

65 time = nowtime.strftime("%Y-%m-%d %H:%M:%S") 66return time

67

68# 获取当前时间转化字符串

69

70 @classmethod

71def test_report(cls):

72 nowtime = datetime.today()

73 reportime = nowtime.strftime("%Y%m%d%H%M%S")

74 reportname = reportime + ".xml"

75return reportname

76

77# 获取测试报告文件名称

78

79 @classmethod

80def test_main(cls):

81global testresults

82 table = CreateExcel.open_excel()

83 nrows = CreateExcel.get_nrows(table)

84 xml = minidom.Document()

85 xml.appendChild(xml.createComment("测试报告"))

86 caselist = xml.createElement("caselist")

87 xml.appendChild(caselist)

88for i in range(0, nrows - 1):

89 testid = CreateExcel.get_id(table, nrows)[i]

90 testname = CreateExcel.get_name(table, nrows)[i]

91 testdata = CreateExcel.get_data(table, nrows)[i]

92 testurl = CreateExcel.get_url(table, nrows)[i]

93 testmethod = CreateExcel.get_method(table, nrows)[i]

94 testpattern = CreateExcel.get_pattern(table, nrows)[i]

95

96# 执行测试

97 CreateTest.test_on()

98 testresults = CreateTest.test_api(testmethod, testurl, testdata)

99 testcode = str(testresults.status_code)

100try:

101 CreateTest.test_http(testresults.status_code)

102except AttributeError:

103pass

104 CreateTest.test_close()

105# 执行结束

106# 生成xml文件

107 case = xml.createElement("case")

108 case.setAttribute("id", testid)

109# 输入用例ID

110

111 name = xml.createElement("name")

112 name.appendChild(xml.createTextNode(testname))

113# 输入用例名称

114 method = xml.createElement("method")

115 method.appendChild(xml.createTextNode(testmethod))

116# 输入接口类型

117 code = xml.createElement("code")

118 code.appendChild((xml.createTextNode(testcode)))

119# 输入用例返回状态码

120 result = xml.createElement("result")

121

result.appendChild(xml.createTextNode(CreateTest.test_result(testpattern)))

122# 输入用例测试结果

123 time = xml.createElement("time")

124 time.appendChild(xml.createTextNode(CreateTest.test_time()))

125# 输入用例执行时间

126

127 case.appendChild(name)

128 case.appendChild(method)

129 case.appendChild(code)

130 case.appendChild(result)

131 case.appendChild(time)

132

133 caselist.appendChild(case)

134# xml文件生成结束

135 filename = file(CreateTest.test_report(), "w+")

136# 生成以当前时间命名的测试报告文件

137 xml.writexml(filename)

138 filename.close()

139# 关闭文件

140

141

142if__name__ == '__main__':

143 CreateTest.test_main()

下面是测试入口:

1#!/usr/bin/env python

2# -*- coding: utf_8 -*-

3# **************************************************************** 4# interface.py

5# Author : ChenLei

6# Version : 2.0

7# Date : 2016-4-15

8# **************************************************************** 9

10import time

11from createtest import CreateTest

12

13 start = time.clock()

14 CreateTest.test_main()

15 end = time.clock()

16

17print"接口自动化脚本运行时间:%.03f seconds" % (end - start)

运行后自动生成当前时间的xml文件如下:

分类: python

相关文档