How can I make a select statement get blocked?
Deadlocking by SELECTs can be done in a variety of ways. I have written posts about them


You can have SELECTs get deadlocked by UPDATEs and DELETEs


Are InnoDB Deadlocks exclusive to INSERT/UPDATE/DELETE?

You can have UPDATEs and DELETEs blocked by SELECTs


How are DB locks tied to connections and sessions?
Is Oracle DB immune to the InnoDB deadlocks found in MySQL?

You can just lock the table before the SELECT and unlock it afterwards


LOCK TABLES table READ;
SELECT ... ;
UNLOCK TABLES;

You could perform a large UPDATE in a transaction with the SERIALIZEABLE isoaltion level. The MySQL Documentation on SERIALIZEABLE isoaltion level says:



  This level is like REPEATABLE READ, but InnoDB implicitly converts all plain SELECT statements to SELECT ... LOCK IN SHARE MODE if autocommit is disabled. If autocommit is enabled, the SELECT is its own transaction. It therefore is known to be read only and can be serialized if performed as a consistent (nonlocking) read and need not block for other transactions. (To force a plain SELECT to block if other transactions have modified the selected rows, disable autocommit.)


Cutting right to the chase, you could just use


SELECT ... FOR UPDATE, then try SELECT against those rows
SELECT ... LOCK IN SHARE MODE, then try to UPDATE or DELETE those rows
See the  MySQL Documentation


Give it a Try !!!