Я пытаюсь запустить pytest на travisCI, и при попытке отправить сообщение электронной почты
класс не проходит * класс
class AdminChangeLocation(Resource):
"""Admin can change the destination of the parcel"""
@jwt_required
def put(self, parcelid):
payload = api.payload
if not payload:
return {'status': 'failed', 'message': 'please provide a json data'}, 400
if not all(key in payload for key in ['location']):
return {'status': 'failed', 'message': 'please provide the destination'}, 400
check_empty = CheckRequired(payload)
checked_empty = check_empty.check_data_payload()
if not checked_empty:
return {'status': 'failed', 'message': 'bad request no empty value allowed'}, 400
parcel = ParcelModel()
parcels = parcel.get_parcel(parcelid)
current_user = get_jwt_identity()
role = current_user['role']
if not role == 'admin':
return {'status': 'failed', 'message': 'Unauthorised. you are not allowed'}, 403
if not parcels:
return {'status': 'failed', 'message': 'parcel ID does not exist', "data": parcels}, 404
change = parcel.change_location(payload['location'], parcelid)
if not change:
return {'status': 'failed', 'message': 'There was an error processing data'}, 500
parcels['current_location'] = payload['location']
# get the user_id
user_id = parcels["user_id"]
# Get the user email
user = UserModel()
user_data = user.get_user_email(user_id)
user_email = user_data[1]
message = "Hey Customer the current location of your parcel " + parcelid + " is now in\n" \
"" + parcels['current_location']
email = SendMail()
email.send_mail(message, user_email, "Parcel update")
return {'status': 'success', 'message': 'Waiting for confirmation', "data": parcels}, 202
тест
"""This test case tets the parcel test cases"""
def test_admin_change_location(self):
"""Test API if it adds a parcel(POST)"""
data = {"email": "admin@gmail.com",
"password": "admin",
"role": "admin"}
data2 = {"email": "langatchirchir@gmail.com",
"password": "kevin12345",
"role": "user"}
location = {"location": "Nairobi"}
res = self.client().post("api/v2/auth/signup", json=self.admin)
res2 = self.client().post("api/v2/auth/login", json=data)
data = json.loads(res2.get_data(as_text=True))
token_admin = data['data']['token']
res = self.client().post("api/v2/auth/signup", json=self.user)
res2 = self.client().post("api/v2/auth/login", json=data2)
data = json.loads(res2.get_data(as_text=True))
token_user = data['data']['token']
res = self.client().post("api/v2/parcels", json=self.parcel, headers=dict(Authorization="Bearer " + token_user))
data = json.loads(res.get_data(as_text=True))
order_id = data['parcel']['order_no']
res = self.client().put("api/v2/parcels/" + order_id + "/presentLocation", json=location,
headers=dict(Authorization="Bearer " + token_admin))
self.assertEqual(res.status_code, 202)
self.assertIn("Nairobi", str(res.data))
Travis.yml
language: python
python:
- "3.6"
install:
- pip install -r requirements.txt
- pip install pytest
- pip install pytest-cov
- pip install coveralls
- pip install psycopg2-binary
services:
- postgresql
before_script:
- psql -c 'create database send_it_test;' -U postgres
- export DB_TEST="dbname='send_it_test' host='localhost' port='5432' user='postgres' password=''"
- export FLASK_ENV=testing
# email variables have been set on travis .env
script:
- pytest --cov=app/
after_success:
- coveralls