背景

编写自动化测试脚本验证服务接口和业务流程是否正常是必不可少的监控步骤, 但是现在很多注册接口需要使用邮箱来注册,并校验邮箱验证码,这应该如何实现自动测试?
主要难点在于如何生成大量临时邮箱(因为每次注册一个账号后该邮箱就不可再用了),还有如何自动获取邮件中的验证码.下面使用了免费的临时邮箱http://24mail.chacuo.net/网站来获取临时邮箱,调用获取邮件内容的接口正则匹配检索6位验证码

代码

下面是Python代码, 利用pytest作为测试框架,根据实际修改调用自己的发送验证码接口和注册接口

from pytest import mark
import logging
from retrying import retry
import requests, re, json
from lxml import etreeemail_address_url = 'http://24mail.chacuo.net/'class TestRegister:def setup_method(self, method):# 初始化self.test_init = 'test init'def test_register(self):session = requests.Session()page = session.get(email_address_url)email_address_prefix = etree.HTML(page.text).xpath("//input[@id='converts']/@value")email_address_net = email_address_prefix[0]+'@chacuo.net'logging.info('1. get temp email_address: %s' % email_address_net)# 调用自己的服务接口,发送邮箱注册码logging.info('2. send register email code')# params = {'email': email_address_net, 'type': "register"}# resp = self.form_post("api/sendEmailCode", params)# assert resp.json()['code'] == 200email_code = self.get_email_code(email_address_net, email_address_prefix, session)logging.info('3. get register email_code: %s' % email_code)logging.info('4. register user')# 调用自己的服务注册接口# resp = self.post('api/emailRegist', data={#     'username': email_address_net,#     'password': '123456',#     'emailcode': email_code,# })# assert resp.json()['code'] == 200# helper methoddef get_email_code(self, email_address, session):data = {'data': email_address[0], 'type': 'set', 'arg': 'd=chacuo.nef_f='}session.post(email_address_url, data=data)# refresh emaildata = {'data': email_address[0], 'type': 'refresh', 'arg': ''}mid = self.refresh_email(session, data)# retrieves email_code from email infodata = {'data': email_address[0], 'type': 'mailinfo', 'arg': 'f='+str(mid)}mail_info = session.post(email_address_url, data=data)email_code = re.findall(r'>(\d+)<', str(mail_info.text))return email_code[0]# retry refresh to receive email@retry(stop_max_attempt_number=10, wait_fixed=2000)def refresh_email(self, session, data):refresh = session.post(email_address_url, data=data)content = json.loads(refresh.text)if len(content['data'][0]['list']) > 0:return content['data'][0]['list'][0]['MID']raise Exception('no receive email_code')

在测试过程中,发现国内通过阿里云邮件服务发送的邮件到不了该临时邮箱,国外AWS邮件服务则可正常发送邮件到该临时邮箱,这点需要注意.

自动化测试注册接口,如何生成大量临时邮箱和获取邮箱验证码相关推荐

  1. 【Python】自动化办公-outlook邮箱处理(获取邮箱附件)/通过下载链接自动下载

    outlook邮箱处理-获取邮箱附件 #先引入outlook import win32com.client outlook = win32com.client.Dispatch("Outlo ...

  2. 谷粒学院 Day12.登录页面模式、整合JWT、整合QQ邮箱、用户登录注册接口【后端】、用户登录注册【前端】

    项目结构: 配置文件 application.properties配置类 spring.jackson.time-zone=GMT+8# nacos注册中心 spring.cloud.nacos.di ...

  3. 邮箱批量登录接验证码_记一次莫名的需求(临时邮箱|企业邮箱)

    目录: 前言 行情 伪需求 过程 1.前戏 2.买域名 3.网易企业邮箱 4.模糊的需求 5.晚饭后 6.临时邮箱1 6.临时邮箱2 7.域名版临时邮箱 8.遇见问题 8.1.DNSPOD 8.2.换 ...

  4. 免费临时邮箱,一次性邮箱

    10分钟临时邮箱网站是一个免费的在线服务,可以为用户提供一个临时的电子邮件地址,有效期为10分钟.该网站的主要目的是为了保护用户的隐私和安全,特别是在需要提供电子邮件地址的情况下,但又不想透露自己的真 ...

  5. 干掉 Postman?测试接口直接生成API文档,这工具真香!

    前几天粉丝群有小伙伴问,有啥好用的API文档工具推荐,无意间发现了一款工具,这里马不停蹄的来给大家分享一下. ShowDoc一个非常适合团队的在线API文档工具,也支持用docker自建文档服务,不过 ...

  6. 干掉 Postman?测试接口直接生成API文档,这个工具我爱了

    前几天粉丝群有小伙伴问,有啥好用的API文档工具推荐,无意间发现了一款工具,这里马不停蹄的来给大家分享一下. ShowDoc一个非常适合团队的在线API文档工具,也支持用docker自建文档服务,不过 ...

  7. python appium自动化测试框架unittest_Appium基于Python unittest自动化测试 自动化测试框架 -- PO并生成html测试报告...

    基于python单元测试框架unittest完成appium自动化测试,生成基于html可视化测试报告 代码示例: #利用unittest并生成测试报告 class Appium_test(unitt ...

  8. python手机充值代码_不用框架,原生使用python做注册接口/登陆接口/充值接口的测试,做的数据/代码分离...

    注意充值时候,cookie的处理方法,还是原来的三种方法 1.操作数据文件  do_exclel.py # -*- conding:utr-8 -*- #@Time :2018/11/8 22:46 ...

  9. Celery实现短信注册接口

    介绍: 1.1 celery应用举例 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,如果你的业务场景中需要用到异步任务,就可以考虑使用cele ...

最新文章

  1. 判断类之间的父子关系
  2. AbpZero之企业微信---登录(拓展第三方auth授权登录)---第一步:查看AbpZero的auth第三方登录的底层机制...
  3. 冒名者还是重名?疑惑中!
  4. 小米2s自带rec刷root_刷Magisk模块开机卡Logo了怎么办?两种方法教你轻松解决
  5. 学术会议墙报_中国化学会第十四届全国电分析化学学术会议在南京顺利召开
  6. 爬虫职业道德----查看Robots.txt
  7. Linux内存管理:Swap介绍以及如何使交换具有可扩展性
  8. Docker-pull
  9. 开源加密库和 GnuPG 模块 Libgcrypt 紧急修复严重漏洞
  10. 使用Doxygen + graphviz生成Unity 3d的UGUI类图
  11. eclipse没有server选项怎么解决
  12. 如何用photoshop给图片添加水印?
  13. 月薪4万是一种什么样的感受?
  14. RHCE-RHEL 7 系统简介
  15. Android Retrofit通过OkHttp设置Interceptor拦截器统一打印请求报文及返回报文
  16. mongodb数据库学习日记(一)
  17. Flink 中的木桶效应:单个 subtask 卡死导致整个任务卡死
  18. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-人机界面如何设置页面跳转
  19. 华为面试:勇敢星实习生
  20. 计算机网络TCP/IP:物理层(信道,调制,香农极限,信道复用技术,宽带接入技术)

热门文章

  1. 细胞工程在植物组织培养中的应用
  2. Flask(1) | Flask的部署
  3. 涡轮流量计的工作原理及维护注意事项
  4. labview虚拟心电监测系统_自动化学院师生在第五届江苏省智能(虚拟)仪器竞赛中取得佳绩...
  5. 【CCNA考完啥时候可以注册?】
  6. 倍加福传感器UC6000-30GM70-UE2R2-V15
  7. c语言请你为儿童专门设计定制一款专门测试算术能力的软件,莆田学院《C语言程序设计》模拟试卷-03-.doc...
  8. 2012 年1月1日
  9. 辣鸡采集,采集世界上所有辣鸡数据 欢迎大家来采集
  10. 很多企业都安装了上网行为管理系统,它的主要功能是什么?