1.pact-python契约测试示例
'''
pact-python契约测试示例
'''
import atexit
import unittest
import requests
from pact import Consumer
from pact import Provider
pact_demo=Consumer('consumer02').has_pact_with(Provider('provider'),pact_dir='./pacts')
pact_demo.start_service()
atexit.register(pact_demo.stop_service)
class PactDemo(unittest.TestCase):
def test_pact(self):
expected = {
'name': 'xuzhu',
'age': 18
}
(pact_demo
.given('test service')
.upon_receiving('for pact')
.with_request('get','/provider')
.will_respond_with(status=200,body={'first':'xu','second':'zhu'}))
with pact_demo:
resp = requests.get('http://localhost:1234/provider').json()
print(resp)
self.assertEqual(expected,resp)
if __name__ == '__main__':
pd = PactDemo()
pd.test_pact()
2. 生产者端,用于生成数据内容
'''
生产者端,用于生成数据内容
'''
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/provider',methods = ['POST','GET'])
def provider():
data = {
'name': 'xuzhu',
'age': 18
}
return jsonify(data)
if __name__ == '__main__':
app.run(host='127.0.0.1',port=8000,debug=True)
3. 1号消费者
'''
1号消费者
'''
import requests
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/consumer01',methods = ['GET'])
def consumer_first():
resp = requests.get('http://127.0.0.1:8000/provider').json()
result = {
'address': 'CSC',
'msg': 'OK',
'name': resp['name']
}
return jsonify(result)
if __name__ == '__main__':
app.run(host='127.0.0.1',port=5001,debug=True)
4. 2号消费者
'''
2号消费者
'''
import requests
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/consumer02',methods = ['GET'])
def consumer_second():
resp = requests.get('http://127.0.0.1:8000/provider').json()
result = {
'address': 'CSC',
'msg': 'OK',
'name':{
'first': resp['first'],
'second': resp['second']
}
}
return jsonify(result)
if __name__ == '__main__':
app.run(host='127.0.0.1',port=5002,debug=True)