Skip to content

Commit 557b465

Browse files
committed
tons of new unit testing resources and update logos
1 parent 14982c3 commit 557b465

File tree

16 files changed

+112
-85
lines changed

16 files changed

+112
-85
lines changed

content/pages/02-development-environments/11-terminal-multiplexers.markdown

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,17 @@ Many terminal multiplexer implementations exist, including:
4242

4343
* [tmux](/tmux.html)
4444

45-
* screen
45+
* [screen](/screen.html)
4646

4747
* byobu
4848

49-
* pymux
49+
* [Pymux](https://pypi.org/project/pymux)
50+
([source code](https://github.com/jonathanslenders/pymux)) is a
51+
terminal multiplexer implementation
52+
written in Python that clones the functionality of [tmux](/tmux.html).
53+
Like tmux and [Screen](/screen.html), Pymux makes it easier for
54+
programmers to use many shells within a single terminal window during
55+
development.
5056

5157

5258
### Terminal multiplexer resources
@@ -63,3 +69,5 @@ Many terminal multiplexer implementations exist, including:
6369
gives solid answers on this (now closed) question of the usefulness of
6470
the major terminal multiplexer implementations.
6571

72+
* [Pymux discussion on Hacker News](https://news.ycombinator.com/item?id=10831149)
73+

content/pages/02-development-environments/14-pymux.markdown

Lines changed: 0 additions & 28 deletions
This file was deleted.

content/pages/03-data/05-object-relational-mappers.markdown

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ There are numerous ORM implementations written in Python, including
137137
1. [Peewee](/peewee.html)
138138
1. [The Django ORM](/django-orm.html)
139139
1. [PonyORM](/pony-orm.html)
140-
1. [SQLObject](/sqlobject.html)
140+
1. [SQLObject](http://sqlobject.org/)
141141

142142
There are other ORMs, such as Canonical's
143143
[Storm](https://storm.canonical.com/), but most of them do not appear to
@@ -190,11 +190,10 @@ open source, under the Apache 2.0 license.
190190

191191
### SQLObject ORM
192192
[SQLObject](http://sqlobject.org/) is an ORM that has been under active
193-
open source development since
193+
open source development for over 14 years, since
194194
[before 2003](http://sqlobject.org/News1.html#sqlobject-0-5).
195195

196196

197-
198197
## Schema migrations
199198
Schema migrations, for example when you need to add a new column to an
200199
existing table in your database, are not technically part of ORMs. However,
@@ -279,5 +278,20 @@ All Pony ORM resources are listed on the dedicated
279278

280279

281280
### SQLObject resources
282-
SQLObject resources can be found on the [SQLObject ORM page](/sqlobject.html).
283-
281+
SQLObject has been around for a long time as an open source project but
282+
unfortunately there are not that many tutorials for it. The following
283+
talks and posts will get you started. If you take an interest in the project
284+
and write additional resources, file an
285+
[issue ticket](https://github.com/mattmakai/fullstackpython.com/issues)
286+
so we can get them added to this list.
287+
288+
* This post on
289+
[Object-Relational Mapping with SQLObject](http://www.andypatterns.com/index.php/blog/object_relational_mapping_pattern_-_using_sqlobj/)
290+
explains the concept behind ORMs and shows the Python code for how they
291+
can be used.
292+
293+
* Ian Bicking presented on SQLObject back in 2004 with a talk on
294+
[SQLObject and Database Programming in Python](http://www.ianbicking.org/docs/sqlobject-presentation/sqlobject-and-database-programming.html).
295+
296+
* [Connecting databases to Python with SQLObject](https://www.ibm.com/developerworks/library/os-pythonsqlo/index.html)
297+
is an older post but still relevant with getting started basics.

content/pages/03-data/08-django-orm.markdown

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,3 +121,7 @@ following resources should get you past the initial hurdles.
121121
explains the difficulty of supporting Django 1.7 and maintaining South
122122
migrations for Django 1.6 then goes into how it can be done.
123123

124+
* [Writing unit tests for Django migrations](https://www.caktusgroup.com/blog/2016/02/02/writing-unit-tests-django-migrations/)
125+
contains a ton of awesome code examples for testing your
126+
migrations to ensure data migrations work well throughout
127+
the lifecycle of your Django project.

content/pages/03-data/09-sqlobject.markdown

Lines changed: 0 additions & 42 deletions
This file was deleted.

content/pages/03-data/18-numpy.markdown

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,9 @@ other scientific computing packages such as [pandas](/pandas.html).
3636
* [Python NumPy Array Tutorial](https://www.datacamp.com/community/tutorials/python-numpy-tutorial)
3737
is a starter tutorial specifically focused on using and working
3838
with NumPy's powerful arrays.
39+
40+
* [Beyond Numpy Arrays in Python](https://matthewrocklin.com/blog//work/2018/05/27/beyond-numpy)
41+
is a predecessor to a
42+
[Numpy Enhancement Proposal](https://github.com/numpy/numpy/pull/11189)
43+
that recommends how to prepare the scientific computing ecosystme for
44+
GPU, distributed and sparse arrays.

content/pages/03-data/19-scipy.markdown

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,10 @@ for the SciPy ecosystem:
3636
provides a good overview of SciPy compared to the specific NumPy
3737
project, as well as explanations for the wrappers SciPy provides
3838
over lower-level FORTRAN libraries.
39+
40+
* [A plea for stability in the SciPy ecosystem](http://blog.khinsen.net/posts/2017/11/16/a-plea-for-stability-in-the-scipy-ecosystem/)
41+
presents concerns from one scientist's perspective about how fast the
42+
Python programming ecosystem changes and that code can become backwards
43+
incompatible in only a few years. The issue is that many science projects
44+
last decades and therefore cannot follow the rate of change as easily
45+
as typical software development projects.

content/pages/03-data/23-matplotlib.markdown

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,9 @@ toolkits.
4343
of detail on customizing your plots and graphs after creating the
4444
initial visuals.
4545

46+
* [Visualize World Trends using Seaborn in Python](https://towardsdatascience.com/visualize-world-trends-using-seaborn-in-python-2e563e7d35da)
47+
shows world life expectancy in plots generated by Matplotlib and Seaborn.
48+
49+
* [Pandas & Seaborn - A guide to handle & visualize data in Python](https://tryolabs.com/blog/2017/03/16/pandas-seaborn-a-guide-to-handle-visualize-data-elegantly/)
50+
builds a visualization by starting with [pandas](/pandas.html) for data
51+
wrangling then outputs charts with Matplotlib and Seaborn.

content/pages/04-web-development/39-unit-testing.markdown

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,25 @@ by writing the test cases to exercise multiple parts of code at once.
4848
Hypothesis is by going through the well-written
4949
[quickstart](http://hypothesis.readthedocs.io/en/latest/quickstart.html).
5050

51+
* [mimesis](https://github.com/lk-geimfari/mimesis) generates synthetic test
52+
data which is useful to apply in your tests.
53+
5154
* [testify](https://github.com/Yelp/Testify/) was a testing framework
5255
meant to replace the common unittest+nose combination. However, the team
5356
behind testify is transitioning to pytest so it's recommended you do
5457
not use testify for new projects.
5558

5659

5760
### Unit testing resources
61+
Unit tests are useful in every project regardless of programming language.
62+
The following resources provide a good overview of unit testing from
63+
several viewpoints and follow up with additional depth in testing
64+
Python-specific applications.
65+
66+
* [Introduction to Unit Testing](https://qunitjs.com/intro/)
67+
provides a broad introduction to unit testing, its importance and
68+
how to get started in your projects.
69+
5870
* [Dive into Python 3's chapter on unit testing](http://www.diveintopython3.net/unit-testing.html)
5971
has a complete example with code and a detailed explanation for creating
6072
unit testing with the
@@ -88,3 +100,27 @@ by writing the test cases to exercise multiple parts of code at once.
88100
While the article is from 2006, it remains relevant today for learning
89101
how to use nose with your projects.
90102

103+
* [Revisiting Unit Testing and Mocking in Python](https://blog.fugue.co/2017-07-18-revisiting-unit-testing-and-mocking-in-python.html)
104+
is a wonderful post with many code examples showing how and
105+
why to use dependency injection and `@property` to mock unit
106+
tests.
107+
108+
* [Unit Testing Doesn’t Affect Codebases the Way You Would Think](https://blog.ndepend.com/unit-testing-affect-codebases/)
109+
presents research on how unit testing impacts project code and
110+
ways that it does not. It is only one research report but the findings
111+
on more unit tests leading to higher Cyclomatic Complexity per method
112+
are interesting. Perhaps more tests are needed to keep a project
113+
running due to the increased complexity.
114+
115+
* [Python unittest with Robert Collins](http://pythontesting.net/transcripts/19-python-unittest-robert-collins-2/)
116+
is the transcript of an interview with Robert Collins who is a core
117+
committer of `unittest`.
118+
119+
* [Why most unit testing is a waste](https://rbcs-us.com/documents/Why-Most-Unit-Testing-is-Waste.pdf)
120+
discusses how low risk unit tests rarely fail even as the code
121+
changes and why they do not matter as much to a project's health as
122+
many developers are led to believe based on the test-driven development
123+
dogma.
124+
125+
* [Writing Unit Tests for Django Migrations](https://www.caktusgroup.com/blog/2016/02/02/writing-unit-tests-django-migrations/)
126+
digs into code examples for testing Django data migrations.

redirects/pymux.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta http-equiv="refresh" content="0; url=https://www.fullstackpython.com/terminal-multiplexers.html">
5+
</head>
6+
<body>
7+
</body>
8+
</html>

0 commit comments

Comments
 (0)