Тема: TDD
Хтось пробував TDD. Бо воно в мене іноді виходить, тоді я дуже щасливий, але частіше ну взагалі ніяк не йде, я забиваю і пишу код без тестів.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Хтось пробував TDD. Бо воно в мене іноді виходить, тоді я дуже щасливий, але частіше ну взагалі ніяк не йде, я забиваю і пишу код без тестів.
http://habrahabr.ru/post/62958/
http://en.wikipedia.org/wiki/Behavior-d … evelopment
пишу ukrcms використовую bdd
Ось приклад як я тестив встановлення системи:
@Install\Main
Feature: Check installer
Scenario Outline: : Check installation
Given I check <type> installation of package "blog-pack-1.1.zip"
Given I am on "/install/install.php"
Then I should see "Встановлення UkrCms"
Досить зручно. Підніметься гітахб можете покопати.
У своїх бібліотеках теж використовую цю систему. Дуже часто бувають моменти коли без тестів ніяк
А ще особливо цікаво як ви ізолюєте наприклад всілякі веб-сервіси?
Розкажіть детально в чому проблеми )
Круть, дякую.
Починається вона з такого тесту:
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://localhost:8000')
assert 'Django' in browser.title
Тому що тести треба писати ще до того як ми напишемо хоч рядок коду.
Розкажіть детально в чому проблеми )
Клієнт каже що деякий Azure REST API, раз на вихідних видає Connection refused (TCP пакет з бітом RST). Я не бачив. Я спробував в тесті пропатчити бібліотеку з сокетами аби зімітувати цю помилку, але інтелект поки що не дозволяє, хоча знаю що це можливо.
Тому що тести треба писати ще до того як ми напишемо хоч рядок коду.
моя думка: це все відносно. Для чого писати тест який я знаю що він уже провалиться, я хочу написати код і його тестити. Це звісно холівар але все таки у мене переважно так: я пишу код, дальше тест. Якщо я пишу якусь складну логіку яку ще не знаю як реалізувати тоді я пишу тест і дальше код))
Клієнт каже що деякий Azure REST API, раз на вихідних видає Connection refused (TCP пакет з бітом RST). Я не бачив. Я спробував в тесті пропатчити бібліотеку з сокетами аби зімітувати цю помилку, але інтелект поки що не дозволяє, хоча знаю що це можливо.
Користуйтесь логером. Можна відслідковувати request & response і на основі цих даних зрозуміти в чому глюк.
Писати тести для Azure REST API думаю не потрібно а от для своєї програми треба. Отже необхідно емулювати в тестах деякі відповіді які має віддавати Azure REST API
моя думка: це все відносно. Для чого писати тест який я знаю що він уже провалиться, я хочу написати код і його тестити. Це звісно холівар але все таки у мене переважно так: я пишу код, дальше тест. Якщо я пишу якусь складну логіку яку ще не знаю як реалізувати тоді я пишу тест і дальше код))
Дивно, в мене навпаки, для простого коду я можу зразу написати тест, а для складної логіки - звідки мені знати що і як тестити якщо я ще не написав те що треба тестити?
Користуйтесь логером. Можна відслідковувати request & response і на основі цих даних зрозуміти в чому глюк.
Глюк відловлений задокументований і зрозумілий. Задача - створити в тестах умови за яких він відтворюється.
Писати тести для Azure REST API думаю не потрібно а от для своєї програми треба. Отже необхідно емулювати в тестах деякі відповіді які має віддавати Azure REST API
Так от в тому й суть, що відповідь земулювати не можу, тому що відповідь - це Exception глибоко з бібліотеки socket.
Дивно, в мене навпаки, для простого коду я можу зразу написати тест, а для складної логіки - звідки мені знати що і як тестити якщо я ще не написав те що треба тестити?
У вас є логіки. Це саме головне. Немає коду немає нічого але ви знаєте що у вас має бути на виході. (Результат, обробка дія ..... )
Ось і пишете код як він має використовувати бібліотеку чи щось інше. Тобо на даному етапі у вас є варіант як буде використовуватись ваш код але немає реально вашої бібліотеки.
Можливо трохи заплутано пояснив. Можете написати складну логіку яку не знаєте як реалізувати я підкажу як написати тест
Про Azure REST API я напишу як би я це робив на PHP
class AzureDemo {
public function getResult() {
throw new \Exception('error 25');
}
}
class AppDemo extends AzureDemo {
public function run() {
$this->getResult();
}
}
# test function goes here
function () {
$app = new AppDemo();
$app->run();
}
В даному випадку у вас тест провалиться так як кидається ексепшин. Ось і маєте приблизно робочу логіку. У тестовій функції можете робити все що вам треба і як дальше боротись з цим ексепшином у своїй програмі.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися