Skip to content

Instantly share code, notes, and snippets.

@dmizverev
Last active April 21, 2019 08:20
Show Gist options
  • Save dmizverev/09a7086d93e6bc5f2dca9b71c298fd10 to your computer and use it in GitHub Desktop.
Save dmizverev/09a7086d93e6bc5f2dca9b71c298fd10 to your computer and use it in GitHub Desktop.
Собеседование. Найти ошибку в коде автотеста
# Дано: программное обеспечение, состоящее из базы данных Oracle и сервиса.
# Сервис реализует ресурс /product, в который можно отправить информацию о товаре и его стоимости при помощи http rest api метода post,
# а при помощи метода get получить стоимость товара с вычетом НДС.
# В базе данных информация о товаре находится в двух таблицах
#
# products
#
# | id | name |
# |----|----------|
# | 1 | product1 |
# | 2 | product2 |
# | 3 | product3 |
#
# costs
#
# | id | cost |
# |----|------|
# | 1 | 10 |
# | 2 | 20 |
# | 3 | 30 |
#
# Тестировщик написал автотесты этого программного обеспечения на языке python. Их код представлен ниже.
# Ваша задача заключается в том, чтобы:
# 1. найти технические и логические ошибки в коде тестировщика.
# 2. ответить на вопрос: какие еще тесты Вы можете предложить для тестирования данного ПО
import unittest
import cx_Oracle
import requests
class TestProduct(unittest.TestCase):
def test_set_up_data(self):
# prepare test environment
requests.post("http://myhost.com:8080/product", data={"name":"product1", "cost":"10"})
sleep(43)
requests.post("http://myhost.com:8080/product", data={"name":"product2", "cost":"20"})
sleep(43)
requests.post("http://myhost.com:8080/product", data={"name":"product3", "cost":"30"})
sleep(43)
def test_product(self):
# test 1
o = cx_Oracle.connect("db/pwd@products")
с = o.cursor()
c.execute("select name from products where id = 1")
if c[0][0] != "product1":
print "fail"
raise
# test 2
c.execute("select cost from costs where id = 2") # 20
t = requests.get("http://myhost.com:8080/product/product2") # {"name":"product2", "cost":"16.4"}
h = t["cost"]
g = c[0][0]-18*c[0][0]/100
self.assertEqual(h,g,"fail")
if __name__ == '__main__':
unittest.main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment