SlideShare ist ein Scribd-Unternehmen logo
1 von 11
Niepraktycznie i nieskładnie

o Test Driven Development




   Adam Przybyła <adam@ertel.com.pl>

       (Creative Commons cc-by-nd)

  Mikstura 2 Lateral Thinking - Rybnik 2013
Cykl życia
[root@synergia TDD_ANTLR]# cat test_mikstura.py
#! /usr/bin/python
import unittest

class test_moj(unittest.TestCase):
   def test_test(self):
       self.assertTrue(False)

if __name__ == '__main__':
    unittest.main()
[root@synergia TDD_ANTLR]#
[root@synergia TDD_ANTLR]# ./test_mikstura.py
F
==================================================
====================
FAIL: test_test (__main__.test_moj)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./test_mikstura.py", line 6, in test_test
   self.assertTrue(False)
AssertionError

----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (failures=1)
[root@synergia TDD_ANTLR]#
[root@synergia TDD_ANTLR]# cat test_mikstura.py
#! /usr/bin/python
import unittest

class test_moj(unittest.TestCase):
   def test_test(self):
       self.assertTrue(True)

if __name__ == '__main__':
    unittest.main()
[root@synergia TDD_ANTLR]#
[root@synergia TDD_ANTLR]# ./test_mikstura.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
[root@synergia TDD_ANTLR]#
#!/usr/bin/python
import unittest
import antlr3
from CSVLexer import CSVLexer
from CSVParser import CSVParser
class test_csv(unittest.TestCase):
     def setUp(self):
           pass

    def test_test(self):
         self.assertTrue(True)

    def test_lf(self):
         parser=parserek("n")
         wynik=parser.line()
         self.assertFalse(wynik)

    def test_crlf(self):
         parser=parserek("rn")
         wynik=parser.line()
         self.assertFalse(wynik)

    #@unittest.skip("omijam test")
    def test_red(self):
         parser=parserek("red")
         wynik=parser.pole()
         self.assertEqual(wynik,"red")
grammar CSV;
Options { language=Python; }
@header {
def test1(s): print "test"
}
line returns [wynik]
scope { wynik2 }
@init { wynik =[]; $line::wynik2=[]; }
: ( (NEWLINE) => NEWLINE
 | ( p1=pole {wynik.append(p1) } ( COMMA p1=pole {wynik.append(p1) } )* NEWLINE ) )
{ wynik=$line::wynik2};

COMMA : ( ' '* ',' ' '*) ;

pole returns [wynik1]
@init {
wynik1=""
try:
   wyn=$line::wynik2
except IndexError:
   wyn=[]
}
     : ( p=ZNAWIASEM { wynik1 = $p.text;}
     | p=BEZNAWIASU { wynik1 = $p.text;}
     | //nic
     ) {wyn.append(wynik1)};
NEWLINE : 'r'? 'n';

ZNAWIASEM : ('"' ( options {greedy=false;}: . )+ '"')+
   {txt = self.getText().strip('"').replace('""','"');self.setText(txt)};

BEZNAWIASU          : ~('r' | 'n' | ',' | ' ' | '"')+;
#! /usr/bin/python
# -*- coding: UTF-8 -*-
import unittest
from analizator import *
from pobieracz import *
from TDDczysciciel import Lexer
import pobieracz,analizator,warstwa_leksykalna,codecs,TDDczysciciel
class testy_pobierania(unittest.TestCase):
      def setUp(self):
           pass

    def test_dziala(self):
         self.assertTrue(True)

    def test_nazwy(self):
         self.assertTrue(nazwa_ma_ip("dns.ertel.com.pl"))

    def test_zlej_nazwy(self):
         self.assertFalse(nazwa_ma_ip("dns-45.ertel.com.pl"))

    def test_pinga_dziala(self):
         self.assertTrue(nazwa_odp_na_ping('127.0.0.1'))

    def test_pinga_niedziala(self):
         self.assertFalse(nazwa_odp_na_ping('224.0.0.0'))
Lateral Thinking


●   Wikinomia
●   Wikipedia
●   Wolna kultura
●   Falsyfikacja jako metoda naukowa i metoda testów
Pytania/pomysły?

Weitere ähnliche Inhalte

Was ist angesagt?

数式を構文解析した話
数式を構文解析した話数式を構文解析した話
数式を構文解析した話
y1r96 Ueno
 
Understanding Python decorators
Understanding Python decoratorsUnderstanding Python decorators
Understanding Python decorators
JosipKatalinic
 

Was ist angesagt? (19)

Dij
DijDij
Dij
 
Антон Полухин. C++17
Антон Полухин. C++17Антон Полухин. C++17
Антон Полухин. C++17
 
The Flavor of TypeScript
The Flavor of TypeScriptThe Flavor of TypeScript
The Flavor of TypeScript
 
08 1 함수란
08 1 함수란08 1 함수란
08 1 함수란
 
Тененёв Анатолий, Boost.Asio в алгоритмической торговле
Тененёв Анатолий, Boost.Asio в алгоритмической торговлеТененёв Анатолий, Boost.Asio в алгоритмической торговле
Тененёв Анатолий, Boost.Asio в алгоритмической торговле
 
Алексей Кутумов, C++ без исключений, часть 3
Алексей Кутумов,  C++ без исключений, часть 3Алексей Кутумов,  C++ без исключений, часть 3
Алексей Кутумов, C++ без исключений, часть 3
 
Menu orastat.c
Menu orastat.cMenu orastat.c
Menu orastat.c
 
Osmose
OsmoseOsmose
Osmose
 
Rambler.iOS #8: Чистые unit-тесты
Rambler.iOS #8: Чистые unit-тестыRambler.iOS #8: Чистые unit-тесты
Rambler.iOS #8: Чистые unit-тесты
 
Suma de n numeros
Suma de n numerosSuma de n numeros
Suma de n numeros
 
BABELで、ES2015(ES6)を学ぼう!
BABELで、ES2015(ES6)を学ぼう!BABELで、ES2015(ES6)を学ぼう!
BABELで、ES2015(ES6)を学ぼう!
 
Clang-tidy: путешествие внутрь AST C++
Clang-tidy: путешествие внутрь AST C++Clang-tidy: путешествие внутрь AST C++
Clang-tidy: путешествие внутрь AST C++
 
数式を構文解析した話
数式を構文解析した話数式を構文解析した話
数式を構文解析した話
 
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tipsOpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
 
JavaScript Tips
JavaScript TipsJavaScript Tips
JavaScript Tips
 
変態的PHPフレームワーク rhaco
変態的PHPフレームワーク rhaco変態的PHPフレームワーク rhaco
変態的PHPフレームワーク rhaco
 
Propuesta..sujei
Propuesta..sujeiPropuesta..sujei
Propuesta..sujei
 
JavaScript Assíncrono
JavaScript AssíncronoJavaScript Assíncrono
JavaScript Assíncrono
 
Understanding Python decorators
Understanding Python decoratorsUnderstanding Python decorators
Understanding Python decorators
 

Mehr von Adam Przybyła (7)

NocInformatyka2022.pdf
NocInformatyka2022.pdfNocInformatyka2022.pdf
NocInformatyka2022.pdf
 
Mission ImpAnsible - NSM at (RobotFrame)work
Mission ImpAnsible - NSM at (RobotFrame)work Mission ImpAnsible - NSM at (RobotFrame)work
Mission ImpAnsible - NSM at (RobotFrame)work
 
Koniec testowania na sposób “testerski”. Zmiana paradygmatu testowania oprogr...
Koniec testowania na sposób “testerski”. Zmiana paradygmatu testowania oprogr...Koniec testowania na sposób “testerski”. Zmiana paradygmatu testowania oprogr...
Koniec testowania na sposób “testerski”. Zmiana paradygmatu testowania oprogr...
 
Aby wąż giętki robił to co wymyśli głowa, czyli słów kilka o analizie leksyk...
Aby wąż giętki robił to co wymyśli głowa,  czyli słów kilka o analizie leksyk...Aby wąż giętki robił to co wymyśli głowa,  czyli słów kilka o analizie leksyk...
Aby wąż giętki robił to co wymyśli głowa, czyli słów kilka o analizie leksyk...
 
SELinux, czyli zero-zero-day exploits - DWO 2013
SELinux, czyli zero-zero-day exploits - DWO 2013SELinux, czyli zero-zero-day exploits - DWO 2013
SELinux, czyli zero-zero-day exploits - DWO 2013
 
Humanista w twoim linuksie
Humanista w twoim linuksieHumanista w twoim linuksie
Humanista w twoim linuksie
 
Open Source i nowe technologie, czyli trochę o systemach o dużej niezawodności
Open Source i nowe technologie, czyli trochę o systemach  o dużej niezawodnościOpen Source i nowe technologie, czyli trochę o systemach  o dużej niezawodności
Open Source i nowe technologie, czyli trochę o systemach o dużej niezawodności
 

Mikstura it2013

  • 1. Niepraktycznie i nieskładnie o Test Driven Development Adam Przybyła <adam@ertel.com.pl> (Creative Commons cc-by-nd) Mikstura 2 Lateral Thinking - Rybnik 2013
  • 3. [root@synergia TDD_ANTLR]# cat test_mikstura.py #! /usr/bin/python import unittest class test_moj(unittest.TestCase): def test_test(self): self.assertTrue(False) if __name__ == '__main__': unittest.main() [root@synergia TDD_ANTLR]#
  • 4. [root@synergia TDD_ANTLR]# ./test_mikstura.py F ================================================== ==================== FAIL: test_test (__main__.test_moj) ---------------------------------------------------------------------- Traceback (most recent call last): File "./test_mikstura.py", line 6, in test_test self.assertTrue(False) AssertionError ---------------------------------------------------------------------- Ran 1 test in 0.000s FAILED (failures=1) [root@synergia TDD_ANTLR]#
  • 5. [root@synergia TDD_ANTLR]# cat test_mikstura.py #! /usr/bin/python import unittest class test_moj(unittest.TestCase): def test_test(self): self.assertTrue(True) if __name__ == '__main__': unittest.main() [root@synergia TDD_ANTLR]#
  • 7. #!/usr/bin/python import unittest import antlr3 from CSVLexer import CSVLexer from CSVParser import CSVParser class test_csv(unittest.TestCase): def setUp(self): pass def test_test(self): self.assertTrue(True) def test_lf(self): parser=parserek("n") wynik=parser.line() self.assertFalse(wynik) def test_crlf(self): parser=parserek("rn") wynik=parser.line() self.assertFalse(wynik) #@unittest.skip("omijam test") def test_red(self): parser=parserek("red") wynik=parser.pole() self.assertEqual(wynik,"red")
  • 8. grammar CSV; Options { language=Python; } @header { def test1(s): print "test" } line returns [wynik] scope { wynik2 } @init { wynik =[]; $line::wynik2=[]; } : ( (NEWLINE) => NEWLINE | ( p1=pole {wynik.append(p1) } ( COMMA p1=pole {wynik.append(p1) } )* NEWLINE ) ) { wynik=$line::wynik2}; COMMA : ( ' '* ',' ' '*) ; pole returns [wynik1] @init { wynik1="" try: wyn=$line::wynik2 except IndexError: wyn=[] } : ( p=ZNAWIASEM { wynik1 = $p.text;} | p=BEZNAWIASU { wynik1 = $p.text;} | //nic ) {wyn.append(wynik1)}; NEWLINE : 'r'? 'n'; ZNAWIASEM : ('"' ( options {greedy=false;}: . )+ '"')+ {txt = self.getText().strip('"').replace('""','"');self.setText(txt)}; BEZNAWIASU : ~('r' | 'n' | ',' | ' ' | '"')+;
  • 9. #! /usr/bin/python # -*- coding: UTF-8 -*- import unittest from analizator import * from pobieracz import * from TDDczysciciel import Lexer import pobieracz,analizator,warstwa_leksykalna,codecs,TDDczysciciel class testy_pobierania(unittest.TestCase): def setUp(self): pass def test_dziala(self): self.assertTrue(True) def test_nazwy(self): self.assertTrue(nazwa_ma_ip("dns.ertel.com.pl")) def test_zlej_nazwy(self): self.assertFalse(nazwa_ma_ip("dns-45.ertel.com.pl")) def test_pinga_dziala(self): self.assertTrue(nazwa_odp_na_ping('127.0.0.1')) def test_pinga_niedziala(self): self.assertFalse(nazwa_odp_na_ping('224.0.0.0'))
  • 10. Lateral Thinking ● Wikinomia ● Wikipedia ● Wolna kultura ● Falsyfikacja jako metoda naukowa i metoda testów