1. Урок 1.00:01:02
    Introduction to this section
  2. Урок 2.00:08:27
    Variables in Python
  3. Урок 3.00:02:01
    Solution to coding exercise: Variables
  4. Урок 4.00:06:27
    String formatting in Python
  5. Урок 5.00:05:17
    Getting user input
  6. Урок 6.00:03:20
    Writing our first Python app
  7. Урок 7.00:06:32
    Lists, tuples, and sets
  8. Урок 8.00:04:40
    Advanced set operations
  9. Урок 9.00:04:41
    Solution to coding exercise: lists, tuples, sets
  10. Урок 10.00:05:00
    Booleans in Python
  11. Урок 11.00:08:18
    If statements
  12. Урок 12.00:02:03
    The 'in' keyword in Python
  13. Урок 13.00:08:19
    If statements with the 'in' keyword
  14. Урок 14.00:11:08
    Loops in Python
  15. Урок 15.00:03:09
    Solution to coding exercise: flow control
  16. Урок 16.00:07:25
    List comprehensions in Python
  17. Урок 17.00:08:32
    Dictionaries
  18. Урок 18.00:08:29
    Destructuring variables
  19. Урок 19.00:10:42
    Functions in Python
  20. Урок 20.00:07:41
    Function arguments and parameters
  21. Урок 21.00:03:55
    Default parameter values
  22. Урок 22.00:07:20
    Functions returning values
  23. Урок 23.00:02:31
    Solution to coding exercise: Functions
  24. Урок 24.00:07:53
    Lambda functions in Python
  25. Урок 25.00:04:02
    Dictionary comprehensions
  26. Урок 26.00:06:17
    Solution to coding exercise: dictionaries
  27. Урок 27.00:10:25
    Unpacking arguments
  28. Урок 28.00:08:45
    Unpacking keyword arguments
  29. Урок 29.00:15:53
    Object-Oriented Programming in Python
  30. Урок 30.00:06:26
    Magic methods: __str__ and __repr__
  31. Урок 31.00:05:05
    Solution to coding exercise: classes and objects
  32. Урок 32.00:14:04
    @classmethod and @staticmethod
  33. Урок 33.00:05:55
    Solution to coding exercise: @classmethod and @staticmethod
  34. Урок 34.00:08:33
    Class inheritance
  35. Урок 35.00:06:09
    Class composition
  36. Урок 36.00:05:09
    Type hinting in Python 3.5+
  37. Урок 37.00:09:34
    Imports in Python
  38. Урок 38.00:08:53
    Relative imports in Python
  39. Урок 39.00:12:48
    Errors in Python
  40. Урок 40.00:05:05
    Custom error classes
  41. Урок 41.00:07:53
    First-class functions
  42. Урок 42.00:07:13
    Simple decorators in Python
  43. Урок 43.00:03:34
    The 'at' syntax for decorators
  44. Урок 44.00:02:25
    Decorating functions with parameters
  45. Урок 45.00:04:51
    Decorators with parameters
  46. Урок 46.00:06:04
    Mutability in Python
  47. Урок 47.00:04:28
    Mutable default parameters (and why they're a bad idea)
  48. Урок 48.00:00:38
    Conclusion of this section
  49. Урок 49.00:00:25
    Introduction to this section
  50. Урок 50.00:06:43
    Setting up our project
  51. Урок 51.00:11:11
    Writing our first test
  52. Урок 52.00:05:27
    Testing dictionary equivalence
  53. Урок 53.00:06:44
    Writing blog tests and PyCharm run configurations
  54. Урок 54.00:08:50
    The __repr__ method, and intro to TDD
  55. Урок 55.00:11:58
    Integration tests and finishing the blog
  56. Урок 56.00:16:38
    Mocking, patching, and system tests
  57. Урок 57.00:07:30
    Patching the input method and returning values
  58. Урок 58.00:16:04
    Taking our patching further
  59. Урок 59.00:07:08
    The last few patches!
  60. Урок 60.00:04:37
    The TestCase setUp method
  61. Урок 61.00:00:28
    Conclusion of this section
  62. Урок 62.00:00:27
    Introduction to this section
  63. Урок 63.00:04:39
    Setting our project up
  64. Урок 64.00:06:51
    Creating our Flask app
  65. Урок 65.00:09:57
    Our first System test
  66. Урок 66.00:06:33
    Refactoring our System Tests
  67. Урок 67.00:00:34
    Conclusion of this section
  68. Урок 68.00:00:36
    Introduction to this section
  69. Урок 69.00:18:19
    A look at a REST API with Flask
  70. Урок 70.00:08:16
    Unit testing a REST API
  71. Урок 71.00:09:38
    Setting up our generic BaseTest
  72. Урок 72.00:06:48
    Integration testing a REST API
  73. Урок 73.00:00:26
    Conclusion of this section
  74. Урок 74.00:00:21
    Introduction to this section
  75. Урок 75.00:08:46
    Setting up our project
  76. Урок 76.00:05:26
    Testing foreign key constraints with Python
  77. Урок 77.00:11:04
    Unit testing models and SQLAlchemy mappers
  78. Урок 78.00:11:39
    Finishing our Store tests
  79. Урок 79.00:00:25
    Conclusion of this section
  80. Урок 80.00:00:29
    Introduction to this section
  81. Урок 81.00:03:59
    Setting project up and creating User model
  82. Урок 82.00:04:11
    Allowing users to log in
  83. Урок 83.00:04:15
    Writing our User tests
  84. Урок 84.00:05:00
    The setUpClass method in the BaseTest
  85. Урок 85.00:06:42
    Testing user registration
  86. Урок 86.00:07:33
    Finalising user System tests
  87. Урок 87.00:13:36
    Writing Store System tests
  88. Урок 88.00:22:36
    Writing our Item System tests and testing authentication
  89. Урок 89.00:00:27
    Conclusion of this section
  90. Урок 90.00:00:41
    Introduction to this section
  91. Урок 91.00:09:02
    Introduction to Postman
  92. Урок 92.00:05:51
    Our first Posman tests
  93. Урок 93.00:07:05
    Setting and clearing environment variables in Postman
  94. Урок 94.00:07:54
    Running a test folder in Postman
  95. Урок 95.00:06:09
    Advanced PyCharm run configurations
  96. Урок 96.00:04:44
    Installing Node and Newman
  97. Урок 97.00:03:02
    Multirun in PyCharm—Running app and tests together
  98. Урок 98.00:00:37
    Conclusion of this section
  99. Урок 99.00:00:39
    Introduction to this section
  100. Урок 100.00:04:13
    Installing Git
  101. Урок 101.00:05:29
    What is a Git repository?
  102. Урок 102.00:04:32
    A local Git workflow
  103. Урок 103.00:05:18
    GitHub and remote repositories
  104. Урок 104.00:04:52
    Adding our project to GitHub
  105. Урок 105.00:02:30
    What is Travis CI?
  106. Урок 106.00:01:39
    Adding our repository to Travis
  107. Урок 107.00:10:34
    The Travis config file and running tests
  108. Урок 108.00:02:48
    Adding our test badge to the Readme
  109. Урок 109.00:00:39
    Conclusion of this section
  110. Урок 110.00:00:41
    Introduction to this section
  111. Урок 111.00:05:09
    What is acceptance testing?
  112. Урок 112.00:03:11
    Introduction to our project
  113. Урок 113.00:10:47
    Our first acceptance test step
  114. Урок 114.00:03:39
    Getting the Chrome webdriver
  115. Урок 115.00:05:45
    Verifying everything works
  116. Урок 116.00:14:52
    Finishing our first test
  117. Урок 117.00:04:01
    Re-using steps with the regular expression matcher
  118. Урок 118.00:09:19
    Our first content test
  119. Урок 119.00:18:37
    Page locators and models
  120. Урок 120.00:07:31
    The blog page
  121. Урок 121.00:06:46
    Using pages in navigation
  122. Урок 122.00:02:26
    Don't over-generalise tests!
  123. Урок 123.00:07:34
    Waits and timeouts with Selenium
  124. Урок 124.00:03:33
    Debugging acceptance tests in PyCharm
  125. Урок 125.00:02:47
    Our final complex scenario
  126. Урок 126.00:13:02
    Filling in forms with Selenium
  127. Урок 127.00:00:42
    Conclusion of this section