测试文本笔记

本文介绍了测试的分类,包括按项目流程阶段、代码可见度、软件测试面的划分,并详细讲解了自动化测试工具的安装和WebDriver API的使用,如元素定位、浏览器控制和iframe操作。同时提到了unittest模块用于邮件发送的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试必须熟练掌握Postman Echo

1,定时任务

2,Bug管理

3,测试报告

4,生成管理

1、测试的分类

1.1 按照项目的流程阶段来分

单元测试:也叫做模块测试

集成测试:检查各个模块的接口是否正确

系统测试:争对整个产品系统

验收测试:

1.2 根据代码的可见度分:白盒测试、黑盒测试(只管输入是否输出)、灰盒测试

1.3 根据软件的测试面分:功能测试、性能测试

1.4 软件测试的周期

冒烟测试:对一个新版本在进行大规模测试之前,先验证一下基本功能是否实现。

回归测试:修改旧代码之后

随机测试:测试中所有输入的数据都是随机生成的,其目的是为了模拟真实的用户操作。

探索性测试:

安全性测试:

2、安装自动化测试工具

2.1 安装

2.2 安装webdriver驱动

3、webdriver API

3.1 从定位元素开始

3.1.1, id定位

def find_elements_by_id(self, id_):
    """
    Finds multiple elements by id.

    :Args:
     - id\_ - The id of the elements to be found.

    :Returns:
     - list of WebElement - a list with elements if any was found.  An
       empty list if not

    :Usage:
        elements = driver.find_elements_by_id('foo')
    """
    return self.find_elements(by=By.ID, value=id_)

3.1.2name定位

3.1.3,class定位

3.1.4,tag定位

3.1.5,link定位

3.1.6,xpath定位(重要)

3.1.7, css定位

3.2 控制浏览器

3.2.1 控制浏览器窗口大小

driver.set_window_size(400,600)
或者
driver.maxmize_window()

注意点:set_window_size需要指定宽高

​ maxmize_window不需要指定任何参数,一般情况下,PC端需要全屏展示。

3.2.2,控制浏览器前进与后退

(1)切换操作句柄:

获取当前页面的句柄:driver.current_window_handle
获取当前所以的句柄:window_handles
六、参考代码

# coding:utf-8

from selenium import webdriver

driver = webdriver.Firefox()

driver.get("http://bj.ganji.com/")

h = driver.current_window_handle

print h  # 打印首页句柄

driver.find_element_by_link_text("招聘求职").click()

all_h = driver.window_handles

print all_h     # 打印所有的句柄

# 方法一:判断句柄,不等于首页就切换

# for i in all_h:                       # 这里不建议用for循环了,很多小伙伴懵的

#     if i != h:

#         driver.switch_to.window(i)

#         print driver.title

# 方法二:获取list里面第二个直接切换

driver.switch_to.window(all_h[1])

print driver.title

# 关闭新窗口

driver.close()

# 切换到首页句柄

driver.switch_to.window(h)

# 打印当前的title

print driver.title

(2)前进与后退:

前进:driver.forward()

后退:driver.back()

(3)页面刷新

driver.refresh()

3.3,iframe(重要) 嵌套

用于爬虫

切入和切出

switch_to_frame(‘id-name’)

https://blog.csdn.net/minzhung/article/details/102743347?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight

3.4 获取当前页面上所有的数据:

print(driver.page_source)

3.5,后台管理站点模型展示admin

from django.contrib import admin

from webtest.models import WeBcase,Webcasestep

class WebcaseAdmin(admin.ModelAdmin):#webcaseadmin继承modeladmin
    list_display=['id','webcasename','webtestresult','webtest','creat_time']
    
admin.site.register(Webcase,WebAdmin)


class Webcasestep(admin.ModelAdmin):
    list.display=['webcasestep','webtestobjname','web']

rest_fremwork的安装pip install

3.6外键相关模型在后台管理站点的展示(测试用例)

3.7,获取文本数据


3.8,鼠标事件

3.9,等待(显示等待和隐示等待)

为了脚本的稳定性。

显示等待:指定某一个条件成立才执行。

from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_condition as es

隐示等待:

4,

5,unittest

runttest.py

#构造测试集
if __name__="__main__"

#todo 执行测试
#runner=unittest.TextTestRunner

邮件发送:

https://www.cnblogs.com/yufeihlf/p/5726619.html

python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用。smtplib模块主要负责发送邮件,email模块主要负责构造邮件。1.smtplib模块

smtplib使用较为简单。以下是最基本的语法。

导入及使用方法如下:

[复制代码](javascript:void(0)😉

import smtplib

smtp = smtplib.SMTP() 
smtp.connect('smtp.163.com',25) 
smtp.login(username, password) 
smtp.sendmail(sender, receiver, msg.as_string()) 
smtp.quit()

[复制代码](javascript:void(0)😉

说明:

smtplib.SMTP():实例化SMTP()

connect(host,port):

host:指定连接的邮箱服务器。常用邮箱的smtp服务器地址如下:

新浪邮箱:smtp.sina.com,新浪VIP:smtp.vip.sina.com,搜狐邮箱:smtp.sohu.com,126邮箱:smtp.126.com,139邮箱:smtp.139.com,163网易邮箱:smtp.163.com。

port:指定连接服务器的端口号,默认为25.

login(user,password):

user:登录邮箱的用户名。

password:登录邮箱的密码,像笔者用的是网易邮箱,网易邮箱一般是网页版,需要用到客户端密码,需要在网页版的网易邮箱中设置授权码,该授权码即为客户端密码。

sendmail(from_addr,to_addrs,msg,…):

from_addr:邮件发送者地址

to_addrs:邮件接收者地址。字符串列表[‘接收地址1’,‘接收地址2’,‘接收地址3’,…]或’接收地址’

msg:发送消息:邮件内容。一般是msg.as_string():as_string()是将msg(MIMEText对象或者MIMEMultipart对象)变为str。

quit():用于结束SMTP会话。

2.email模块

email模块下有mime包,mime英文全称为“Multipurpose Internet Mail Extensions”,即多用途互联网邮件扩展,是目前互联网电子邮件普遍遵循的邮件技术规范。

该mime包下常用的有三个模块:*text**,image,*multpart

导入方法如下:

from email.mime.multipart import MIMEMultipart    
from email.mime.text import MIMEText    
from email.mime.image import MIMEImage

构造一个邮件对象就是一个Message对象,如果构造一个MIMEText对象,就表示一个文本邮件对象,如果构造一个MIMEImage对象,就表示一个作为附件的图片,要把多个对象组合起来,就用MIMEMultipart对象,而MIMEBase可以表示任何对象。它们的继承关系如下:

Message
+- MIMEBase
   +- MIMEMultipart
   +- MIMENonMultipart
      +- MIMEMessage
      +- MIMEText
      +- MIMEImage

3.文字,html,图片,附件实现实例
#coding: utf-8    
  
import smtplib    
from email.mime.multipart import MIMEMultipart    
from email.mime.text import MIMEText    
from email.mime.image import MIMEImage 
from email.header import Header   
    
#设置smtplib所需的参数
#下面的发件人,收件人是用于邮件传输的。
smtpserver = 'smtp.163.com'
username = 'XXX@163.com'
password='XXX'
sender='XXX@163.com'
#receiver='XXX@126.com'
#收件人为多个收件人
receiver=['XXX@126.com','XXX@126.com']

subject = 'Python email test'
#通过Header对象编码的文本,包含utf-8编码信息和Base64编码信息。以下中文名测试ok
#subject = '中文标题'
#subject=Header(subject, 'utf-8').encode()
    
#构造邮件对象MIMEMultipart对象
#下面的主题,发件人,收件人,日期是显示在邮件页面上的。
msg = MIMEMultipart('mixed') 
msg['Subject'] = subject
msg['From'] = 'XXX@163.com <XXX@163.com>'
#msg['To'] = 'XXX@126.com'
#收件人为多个收件人,通过join将列表转换为以;为间隔的字符串
msg['To'] = ";".join(receiver) 
#msg['Date']='2012-3-16'

#构造文字内容   
text = "Hi!\nHow are you?\nHere is the link you wanted:\nhttp://www.baidu.com"    
text_plain = MIMEText(text,'plain', 'utf-8')    
msg.attach(text_plain)    

#构造图片链接
sendimagefile=open(r'D:\pythontest\testimage.png','rb').read()
image = MIMEImage(sendimagefile)
image.add_header('Content-ID','<image1>')
image["Content-Disposition"] = 'attachment; filename="testimage.png"'
msg.attach(image)

#构造html
#发送正文中的图片:由于包含未被许可的信息,网易邮箱定义为垃圾邮件,报554 DT:SPM :<p><img src="cid:image1"></p>
html = """
<html>  
  <head></head>  
  <body>  
    <p>Hi!<br>  
       How are you?<br>  
       Here is the <a href="http://www.baidu.com">link</a> you wanted.<br> 
    </p> 
  </body>  
</html>  
"""    
text_html = MIMEText(html,'html', 'utf-8')
text_html["Content-Disposition"] = 'attachment; filename="texthtml.html"'   
msg.attach(text_html)    


#构造附件
sendfile=open(r'D:\pythontest\1111.txt','rb').read()
text_att = MIMEText(sendfile, 'base64', 'utf-8') 
text_att["Content-Type"] = 'application/octet-stream'  
#以下附件可以重命名成aaa.txt  
#text_att["Content-Disposition"] = 'attachment; filename="aaa.txt"'
#另一种实现方式
text_att.add_header('Content-Disposition', 'attachment', filename='aaa.txt')
#以下中文测试不ok
#text_att["Content-Disposition"] = u'attachment; filename="中文附件.txt"'.decode('utf-8')
msg.attach(text_att)    
       
#发送邮件
smtp = smtplib.SMTP()    
smtp.connect('smtp.163.com')
#我们用set_debuglevel(1)就可以打印出和SMTP服务器交互的所有信息。
#smtp.set_debuglevel(1)  
smtp.login(username, password)    
smtp.sendmail(sender, receiver, msg.as_string())    
smtp.quit()

6,接口自动化测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值