自动化测试,从入门到跑路1

年轻的测试哟,听说你要写自动化?

听说不想做自动化的测试,不是好测试工程师。作为一名高贵的单身狗软件测试工程师,区区自动化还是信手拈来的。 (才不会告诉你,是我们大哥叫我们写自动化)


这里是背景: 因为某项目在迁移技术栈,从Ruby迁移至PHP,由于没有测试介入,导致上线后部分功能不可用,于是老大揪过来了测试,并且要求能写自动化的地方就尝试写些自动化。


作为本司唯二(唯一这个编号不是我的)的测试,自然义不容辞的拉上了另外一个测试(就是哪个唯一),从头把项目整理了一遍。

1、2、3,开始动手做

这次要做的事情是:检查界面显示文章的显示是否正常。

已经手动过了一遍,但是作为一名有理想、有追求、有想法的三有青年,怎么可能满足于这种机械重复的点点点,于是为了 (偷懒) 更高效、高质量的敏捷测试,打开万恶的PyCharm,新建Project,开始了这条不归路。(海量免费学习资料,软件测试交流:1140267353,还会有同行一起技术交流)

问,把界面做自动化,总共分几步?

第1步 分析界面

我们的网页是纯HTML项目,没有用Vue之类的框架,对测试来说还是比较友好的,很多界面的元素可以直接定位操作。

我们的目标是检查界面显示的内容是否有问题,化繁为简,也就是说界面显示的文本中,不包含

'<div>'、'</div>'、'<a>'、'</a>'、'&lt;'、'&gt;'
复制代码

等基本就没什么问题。

第2步 开开心心敲脚本

于是大手一挥,写出了一个函数:(海量免费学习资料,软件测试交流:1140267353,还会有同行一起技术交流)

def check_text(text):
	return('<'in text)and('&lt;' in text)and('&gt;' in text)
复制代码

检查用的函数已经搞定,剩下的就是获取页面元素了。

此次我们需要检查的界面有两个:

url = [’链接A’, ’链接B‘]
复制代码

尝试获取需要验证的部分,再偷懒简化下范围,只要界面第一页的文章列表,标题和摘要显示没问题,基本就OK了。

获取当前界面所有文章的标题和摘要:

item_title=driver.find_elements_by_class_name(’item_title’)
item_content_box= driver.find_elements_by_class_name(’item_content_box’)
复制代码

剩下的就是把所有的内容检查一遍了:

def check_articles(num, titles, boxes):
    for i inrange(0, len(titles)):
        title = titles[i].text
        box = boxes[i].text
        if(check_text(title) or check_text(box)):
            print('链接:'+ url[num])
            print(title + box+ '显示错误')
            driver.quit()
        elif i < (len(titles)-1):
            continue
        else:
            print('链接:'+ url[num])
            print('所有文章标题和摘要,显示正常')
            driver.quit()
复制代码

最后就是启动我们伟大的webdriver,但是很慢,还好Chrome新增了headless模式,可以不用启动界面,速度快了好多。 自从用了headless,腰不酸了,腿不疼了,走路有劲了,一口气写五个测试脚本,不费劲。

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
driver = webdriver.Chrome(chrome_options=chrome_options)
复制代码

第3步 组合

本来是想用uniitest组合起来,但是后来想想,就这么两个界面懒癌,还是算了,就这样也挺好。

(海量免费学习资料,软件测试交流:1140267353,还会有同行一起技术交流)

最后的最后

这次只是检查了界面的基本显示,并没有对其他项目进行检查,也没有涉及到接口和业务逻辑的测试,关于这些内容,会放到后面进行详细展开。

我就是我,不一样的测试。

猜你喜欢

转载自blog.csdn.net/weixin_49346599/article/details/107634257