Python基础-day15
2019-01-12 本文已影响0人
陈small末
list
发邮件
日志
测试
元类
发邮件
SMTP服务(打开)
用户名
密码(授权码 只要是涉及到程序里发送邮件用的是授权码 而不是登录密码)
标题:ALIBABA offer
内容:我们要说的话
发件人
还有退出
用途:邮件验证,监控线上API (Django 日志(专门监控所有API))
import smtplib
from email.mime.text import MIMEText
smtp_server = "smtp.qq.com" #你用的邮箱的SMTP地址
port = 25
sender = "493024318@qq.com" #邮箱用户名
pwd = "yaricwaaydxvbggb" #授权码
msg_str = "我的天啊" #邮件正文
msg = MIMEText(msg_str) #将字符串转成我们邮箱内容对象
msg["Subject"] = "来自达哥的问候" #标题
msg["From"] = sender
#SMTP的服务
server = smtplib.SMTP(smtp_server, port) #实例化
server.login(sender, pwd) #登录 验证
#发送邮件
server.sendmail(sender, ["liuda@1000phone.com", "854457314@qq.com", "a_supernova@126.com"], msg.as_string())
#退出
server.quit()
日志参考另一个文档
测试
一个工种:
分类:单元测试
功能测试
系统测试
集成测试
黑盒测试
白盒测试
python:unittest(单元测试) selenium前端自动化测试
测试用例:
前提条件 运行调用和预期结果(测试人员写的)
unittest里类:TestCase(测试例子) TestSuite(测试集合)
import unittest
import HTMLTestRunner
def div(a, b):
return a / b
class MyTest(unittest.TestCase):
def test_div(self):
res = div(4, 2)
self.assertEqual(res, 2)
def test_demo(self):
self.assertDictEqual({"name":2}, {"name":1})
if __name__ == "__main__":
# 实例化一个测试集合
mysuite = unittest.TestSuite()
tests = [MyTest("test_div"), MyTest("test_demo")]
# 将测试例子 加入到测试集合
mysuite.addTests(tests)
# mysuite.addTest(MyTest("test_div"))
f = open("res.html", "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=f, title="测试1810", description="其实我是搞python")
runner.run(mysuite)
元类【了解】
type是我们python内置唯一元类
什么叫:创建类的类 当我们使用class关键字定义一个类的时候 实际上python就已经给我们创建了一个对象
用type函数创建一个类
myclass = type(类名, (父类们), {属性和函数们})
例子
def add(self):
print("我是add")
B = type("HelloB", (), {"name":"hehe", "my_add": add})
print(type(B))
print(B)
def echo(m):
print(m)
# echo(B)
b = B()
print(b.name)
b.my_add()
自定义元类__metaclass__
# -*- coding:utf-8-*-
# __metaclass__
class MyType(type):
# 创建对象的时候系统调用 比__init__调用要提前
def __new__(class_meta, class_name, class_parents, class_attr):
class_attr["address"] = u"深圳"
res = {k.upper():v for k, v in class_attr.items()}
return type.__new__(class_meta,class_name, class_parents, res)
__metaclass__ = MyType #那整个该文件的class的元类都将被影响
class He:
pass
# __metaclass__ = MyType
class She(He):
pass
# h = He()
# print(h.address)
she = She()
print(she.ADDRESS)
# 当我们创建一个类的时候 python的解释器会在当前类找 __metaclass__字段 如果有就按照我们的元类要求来生成我们的类
# 如果当前类找不到 那就去父类里找 如果元类要求来生成我们的类 如果父类里也没有就去 模块层次去搜索 如果搜不到
# 就使用我们默认的type 给我们创建类