学习虫师的《web接口开发与自动化测试》第六章

38 篇文章 0 订阅
8 篇文章 0 订阅

     终于在第六章见到测试的东西了,之前的几章节,让我了解了用python做后端的一些基础东西吧算,也做了一个简单的发布会签到系统,其实看书不算快,很多时候都在磨蹭,不过最近反正就是强制自己不玩游戏吧,毕竟玩游戏有时候也真的不如看书有趣,最近也想很多,反正先把虫师的书看完,然后会为了新公司看金融类的书,有时候真的不知道自己的兴趣所向,或者之前在找工作的时候别人问会问这个公司如何适应,问是不是我所感兴趣的,其实我内心想的是,职业的做法不就是应该干一行爱一行吗?既然我选择了金融行业,当然会为了这个行业作出更多的了解,其他行业我也会的。

    废话不多说了,讲讲内容吧,第六章在一开始讲了unittest单元测试框架,从一个简单的例子介绍unittest工作的内容,

module.py的代码

'''
Author:zyh
Date:2017-7-22
Describe:+ - * /
'''

class Calculator:
	'''
	to make two numbers add sub mul div
	'''

	def __init__(self,a,b):
		self.a = int(a)
		self.b = int(b)


	#add
	def add(self):
		return self.a + self.b

	def sub(self):
		return self.a - self.b

	def mul(self):
		return self.a * self.b

	def div(self):
		return self.a / self.b

test.py的代码

#!/usr/bin/python3 
'''
Author:zyh
Date:2017-7-22
Describe:+ - * /
'''


import unittest
from module import Calculator

class ModuleTest(unittest.TestCase):

	def setUp(self):
		self.cal = Calculator(8,4)

	def tearDown(self):
		pass

	def test_add(self):
		result = self.cal.add()
		self.assertEqual(result,12)

	def test_sub(self):
		result = self.cal.sub()
		self.assertEqual(result,4)

	def test_mul(self):
		result = self.cal.mul()
		self.assertEqual(result,32)

	def test_div(self):
		result = self.cal.div()
		self.assertEqual(result,2)


if __name__ == '__main__':
	#main()
	#make test

	suite = unittest.TestSuite()
	suite.addTest(ModuleTest("test_add"))
	suite.addTest(ModuleTest("test_sub"))
	suite.addTest(ModuleTest("test_mul"))
	suite.addTest(ModuleTest("test_div"))

	#run

	runner = unittest.TextTestRunner()
	runner.run(suite) 

下面就是结合前五章的内容做了例子了,就放一个吧,因为之前没有做过,也测不了。

#!/usr/bin/python3 
'''
Author:zyh
Date:2017-7-22
Describe:django test
'''
import os,django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "guest.settings")# project_name 项目名称
django.setup()
#os.environ['DJANGO_SETTINGS_MODULE'] = 'guest.settings'    # myTest是项目名称
from django.test import TestCase
from sign.models import Event,Guest
from django.contrib.auth.models import User
#Create your tests here
class IndexPageTest(TestCase):
 	''' test index.html'''

 	def test_index_page_renders_index_template(self):
 		''' test index shitu'''

 		response = self.client.get('/index/')
 		self.assertEqual(response.status_code,200)
 		self.assertTemplateUsed(response,'index.html')

class LoginActionTest(TestCase):
	'''test denglu action'''
	def setUp(self):
		User.objects.create_user('admin','admin@mail.com','xx5595480')

	def test_add_admin(self):
		'''test add user'''
		user = User.objects.get(username="admin")
		self.assertEqual(user.username,"admin")
		self.assertEqual(user.email,"admin@mail.com")

	def test_login_action_username_password_null(self):
		'''user password=null'''
		test_data = {'username':'','password':''}
		response = self.client.post('/login_action/',data=test_data)
		self.assertEqual(response.status_code,200)
		self.assertIn(b'username or password error!',response.content)

	def test_login_action_username_password_error(self):
		'''user passoword=error!'''
		test_data = {'username':'abc','password':'123'}
		response = self.client.post('/login_action/',data=test_data)
		self.assertEqual(response.status_code,200)
		self.assertIn(b'username or password error!',response.content)

	def test_login_action_success(self):
		''' denglu success'''
		test_data = {'username':'admin','password':'xx5595480'}
		response = self.client.post('/login_action/',data=test_data)
		self.assertEqual(response.status_code,302)

class EventMangeTest(TestCase):
	'''fabuhui manage'''

	def setUp(self):
		User.objects.create_user('admin','admin@mail.com','xx5595480')
		Event.objects.create(name="xiaomi5",limit=2000,address='beijing',status=1,start_time='2017-8-10 12:30')
		self.login_user = {'username':'admin','password':'xx5595480'}

	def test_event_manage_success(self):
		'''test fabuhi:xiaomi5'''
		response = self.client.post('/login_action/',data=self.login_user)
		response = self.client.post('/event_manage/')
		self.assertEqual(response.status_code,200)
		self.assertIn(b"xiaomi5",response.content)
		self.assertIn(b"beijing",response.content)


	def test_event_mangae_search_success(self):
		'''test fabuhui search'''
		response = self.client.post('/login_action/',data=self.login_user)
		response = self.client.post('/search_name/',{"name":"xiaomi5"})
		self.assertEqual(response.status_code,200)
		self.assertIn(b"xiaomi5",response.content)
		self.assertIn(b"beijing",response.content)

然后说我遇到的几个问题吧

  1.  因为没有直接登录django的shell,导致出现    Requested  setting EMAIL_BACKEND,   问题,网上也找不到答案,想想其实还是自己没有按书操作

 2.遇到这个问题,call settings.configure() before accessing settings.我用网上的方法可解,应该就是没有设置默认库,

import os,django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "guest.settings")#project_name 项目名称
django.setup()


3.还有个问题 AssertionError: b'   'not found in  django  暂时没解出来。。。


4.这个不是BUG,在解bug的时候,找到一些还不错的文章,讲django的源码解析,还有一个讲的是python 下的mock操作,大家有兴趣也可以找找。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值