如何用python做自动化测试

Python029

如何用python做自动化测试,第1张

用python做自动化测试,主要是接口测试和UI自动化测试。

一、接口测试:

http协议的举例:

可以用python自带的urllib\urllib2模拟,模拟前端向服务器发送数据,获取返回值后,进行校验和判断来进行接口测试。

网上的例子也比较多,这里简单说一下,

比如request中data的边界值测试、字符测试、非空为空测试等等,都可以做

二、UI自动化测试:

html页面(python+selenium)或者一些安卓app(python+appiun)可以用。

主要是页面元素的检查、输入等。

比如可以写一个脚本,自动登录百度页面,搜索某一个关键字,并且获得此关键字的百度搜索数量。

又快临近期末考试了,小伙伴们是不是又开始焦虑了呢?挂科怎么办?如果很幸运看到我的文章,你就偷着乐吧,我总结出:一般python期末考试老师们最爱考的内容,一定要好好看啊,争取做到python不挂科;还有暑假马上来了,小伙伴们可以在闲暇之际,看看小猿圈的视频,为以后找工作垫垫基础,也是很不错的。

一、选择题

1、已知x=[1,2]和y=[3,4],那么x+y等于什么(  )

      A、3            B、7            C、[1,2,3,4]          D、[4,6]

2、os.path模块的下列方法,哪个是用来判断指定路径是否存在的?(  )

    A、exists()      B、exist()        C、getsize()    D、isfile()

3、以下选项中不是 Python 对文件的写操作方法的是 ( D )

A、 writelines      B、write        C、rite 和 seek        D、writetext

4、关于算法的描述,以下选项中错误的是  ( B )

A、算法是指解题方案的准确而完整的描述

B、算法的复杂度主要包括时间复杂度和数据复杂度

C、算法具有可行性、确定性、有穷性的基本特征

D、算法的基本要素包括数据对象的运算和操作及算法的控制结构

解释:算法复杂度是指算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源。

5、.关于Python的lambda函数,以下选项中描述错误的是 ( B )

A、 lambda函数将函数名作为函数结果返回

B、f = lambda x,y:x+y 执行后,f的类型为数字类型

C、lambda用于定义简单的、能够在一行内表示的函数

D、可以使用lambda函数定义列表的排序原则

6、基本的Python内置函数eval(x)的作用是 ( B )

A、 将x转换成浮点数

B、去掉字符串x最外侧引号,当作Python表达式评估返回其值

C、计算字符串x作为Python语句的值

D、 将整数x转换为十六进制字符串

二、填空题

1、 在Python中____表示空类型。(None)

2、 查看变量类型的Python内置函数是______。(type())

3、list(map(str, [1, 2, 3]))的执行结果为___________。([‘1’, ‘2’, ‘3’])

4、 Python标准库math中用来计算平方根的函数是____。(sqrt)

5、 假设有列表a = [‘name’, ‘age’, ‘sex’]和b = [‘Dong’, 38, ‘Male’],请使用一个语句将这两个列表的内容转换为字典,并且以列表a中的元素为“键”,以列表b中的元素为“值”,这个语句可以写为___________。(c = dict(zip(a, b)))

三、简答题

1、简单解释Python基于值的自动内存管理方式?

----Python采用的是基于值得内存管理方式,在Python中可以为不同变量赋值为相同值,这个值在内存中只有一份,多个变量指向同一个内存地址;Python具有自动内存管理功能,会自动跟踪内存中所有的值,对于没有任何变量指向的值,Python自动将其删除。

2、异常和错误有什么区别?

----异常是指因为程序执行过程中出错而在正常控制流以外采取的行为。严格来说,语法错误和逻辑错误不属于异常,但有些语法错误往往会导致异常,例如由于大小写拼写错误而访问不存在的对象,或者试图访问不存在的文件,等等。

3、请用自己的算法, 按升序合并如下两个list, 并去除重复的元素:

      list1 = [2, 3, 7, 4, 9, 5, 6,18]

      list2 = [5, 6, 10, 17, 3, 2,1]

----先转换成集合自动去重,再转换成列表

      list1=[2, 3, 7, 4, 9, 5, 6,18]

      list2=[5, 6, 10, 17, 3, 2,1]

      list3=list(set(list1+list2))

4、求结果

    def num():

      return [lambda x: i*x for i in range(4)]

      print([m(2) for m in num()])

      答案:[6, 6, 6, 6]

5、如何生成一个随机数?

    import random

    def rdm(n):

    lis = []

    for i in range(n):

    n = random.randint(1,9)

    lis.append(str(n))

      s = ''.join(lis)

      return int(s)

这套题就到这里,同学们做的怎么样啊,如果是毫无压力,那估计你这个学期学的python还阔以了,如果有点难度,那就要仔细看看了,因为这套题很基础,看哪没有学明白,好好看看那一部分的内容,自己复习不进去,也可以来小猿圈看看,把自己的弱项重新听听课,准备迎接期末考试吧,希望大家考的都会,蒙的全对,加油啦!

对于各种驱动接口,Python来编写测试用例的好处是:由于Python不需要编译,你所执行的也就是你所编写的,当发生异常的时候,你无须打开集成开发环境,加载测试工程、并调试,你能够很方便的看到python测试脚本的内容,什么地方出了异常可以立刻发现,例如:

from ctypes import *

rc =c_int(-12345)

dll = windll.LoadLibrary("dmodbc.dll")#加载被测试组件

#=================#

SQLHANDLE_env = pointer(c_long(0))

SQLHANDLE_cnn = pointer(c_long(0))

SQLHANDLE_stmt = pointer(c_long(0))

pdns = c_char_p("FASTDB")

puid = c_char_p("SYSDBA")

ppwd = c_char_p("SYSDBA")

#env handle

rc = dll.SQLAllocHandle(1,None,byref(SQLHANDLE_env))

print "result of henv handle alloc :%d" %rc

#cnn handle

rc = dll.SQLAllocHandle(2,SQLHANDLE_env,byref(SQLHANDLE_cnn))

print "result of cnn handle alloc :%d" %rc

#connect!

rc = dll.SQLConnect(SQLHANDLE_cnn,pdns,-3,puid,-3,ppwd,-3)

print "result of connect :%d" %rc

#stmt handle

rc = dll.SQLAllocHandle(3,SQLHANDLE_cnn,byref(SQLHANDLE_stmt))

print "result of stmt handle alloc:%d" %rc

#exec

rc = dll.SQLExecDirect(SQLHANDLE_stmt,"insert into t values(1)",-3)

print "result of exec:%d" %rc

#free========================

rc = dll.SQLFreeHandle(3, SQLHANDLE_stmt)

print rc

rc = dll.SQLDisconnect(SQLHANDLE_cnn)

print rc

rc = dll.SQLFreeHandle(2, SQLHANDLE_cnn)

print rc

rc = dll.SQLFreeHandle(1, SQLHANDLE_env)

print rc

在上面我们可以看到,Python调用c/c++接口是十分容易的,只需要把动态库加载进来,然后把这个动态库当作一个对象实例来使用就可以了。下面将是一个使用ado.net接口的例子:

import System

from Dm import *#Dm是DMDBMS提供的ado.Net的DataProvider

#print dir(Dm.DmCommand)

i =0

cnn = Dm.DmConnection("server = 127.0.0.1User ID = SYSDBAPWD = SYSDBADatabase = SYSTEMport = 12345")

cmd = Dm.DmCommand()

cmd.Connection = cnn

cmd.CommandText = "insert into t values(1)"

cnn.Open()

i=cmd.ExecuteNonQuery()

print i

cmd.Dispose()

cnn.Close()

可以看到,.net对象的使用与在VisualStdio上进行开发几乎没有任何区别。

通过使用Python进行测试用例的开发,最大的好处莫过于:学习成本非常低,测试工程师只需要学习Python,对于其他语言稍有了解就可以了。同时只需要少量的测试开发工程师对Python测试框架进行维护。

这样的好处就是便于测试人员将精力专精在一个方向,免于“什么都会一点,但什么都不精”的情况。当然测试人员具备广阔的知识面,会使用各种常见的开发工具与平台是好事情,并且也是必要的,不过在短时间内要求迅速能够胜任大多数任务也是企业在人才培养上的期望目标。